hdu 1532 Drainage Ditches(edmond-karp最大流算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532

#include <stdio.h>
#include <queue>
#include <string.h>
#include <algorithm>
#define INT_MAX (int)1e9
using namespace std;

const int N = 207;

int network[N][N], pre[N], used[N], flow[N], n, m;                          //pre存储bfs过程中路径,used确保每次bfs对每个节点只遍历一次,flow辅助求bfs过程中的最小流
queue <int> q;

int BFS()
{
	memset(used, 0, sizeof(used));
	memset(flow, -1, sizeof(flow));
	while (!q.empty())
		q.pop();
	for (int i = 1; i <= m; i++)
		pre[i] = i;
	flow[1] = INT_MAX;
	q.push(1);
	while (!q.empty())
	{
		int temp = q.front();
		q.pop();
		for (int i = 1; i <= m; i++)
		{
			if (!used[i] && network[temp][i])
			{
				pre[i] = temp;
				flow[i] = min(flow[temp], network[temp][i]);
				used[i] = 1;
				q.push(i);
			}
		}
	}
	if (flow[m] == -1)
		return 0;
	else
		return flow[m];
}

int edmond_karp()                                                            //bfs找到最小流,正向减去最小流,并且反向增加最小流
{
	int ans = 0, minFlow;
	while (minFlow = BFS())
	{
		ans += minFlow;
		int r = m;
		while (r != 1)
		{
			network[r][pre[r]] += minFlow;
			network[pre[r]][r] -= minFlow;
			r = pre[r];
		}
	}
	return ans;
}

int main()
{
	while (scanf("%d%d", &n, &m) != EOF)
	{
		memset(network, 0, sizeof(network));
		for (int i = 1; i <= n; i++)
		{
			int u, v, w;
			scanf("%d%d%d", &u, &v, &w);
			network[u][v] += w;
		}
		int ans = edmond_karp();
		printf("%d\n", ans);
	}
	return 0;
}
时间: 2024-11-10 07:24:36

hdu 1532 Drainage Ditches(edmond-karp最大流算法)的相关文章

HDU 1532 Drainage Ditches 最大排水量 网络最大流 Edmonds_Karp算法

题目链接:HDU 1532 Drainage Ditches 最大排水量 Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9641    Accepted Submission(s): 4577 Problem Description Every time it rains on Farmer John

hdu 1532 Drainage Ditches(最大流)

Drainage Ditches Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drai

hdu - 1532 Drainage Ditches (最大流)

http://acm.hdu.edu.cn/showproblem.php?pid=1532 求最大的流量,用dinic算法就好. 1 // Rujia Liu 2 // 因为图较大,所以采用Dinic而不是EdmondsKarp 3 // 得益于接口一致性,读者无须理解Dinic就能使用它. 4 #include<cstdio> 5 #include<cstring> 6 #include<queue> 7 #include<algorithm> 8 us

HDU 1532 Drainage Ditches (网络流)

A - Drainage Ditches Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by wate

HDU - 1532 - Drainage Ditches &amp;&amp; 3549 - Flow Problem (网络流初步)

Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10875    Accepted Submission(s): 5131 Problem Description Every time it rains on Farmer John's fields, a pond forms over Bessie'

HDU 1532 Drainage Ditches (最大网络流)

Drainage Ditches Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 5   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Every time it rains on

HDU 1532 Drainage Ditches(最大流 EK算法)

题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路: 网络流最大流的入门题,直接套模板即可~ 注意坑点是:有重边!!读数据的时候要用"+="替换"=". 对网络流不熟悉的,给一篇讲解:http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html. ?(? ? ??)我是看这篇博客才入门的. 代码: 1 #include <cstdio> 2 #includ

HDU 1532 Drainage Ditches 排水渠(网络流,最大流,入门)

题意:给出一个有向图,以及边上的容量上限,求最大流.(有重边,要将容量上限叠加) 思路:用最简单的EK+BFS解决.每次搜到一条到达终点的路径,就立刻退出,更新ans,然后再回头修改图中的当前flow状况(这就得靠记录路径了).当当前图没有到达终点的路径图,流已经饱和,可以结束程序了. 1 #include <bits/stdc++.h> 2 #define LL long long 3 #define pii pair<int,int> 4 #define INF 0x7f7f7

HDU 1532 Drainage Ditches

http://acm.hdu.edu.cn/showproblem.php?pid=1532 基础题. 1 #include<iostream> 2 #include<cstring> 3 #include<string> 4 #include<algorithm> 5 #include<queue> 6 using namespace std; 7 8 int n, m, flow; 9 int vis[205]; 10 //路径记录 11 i