HDU 3549 — Flow Problem 入门题
admin
2024-04-10 12:54:21

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3549

题意:给定n个点,m条边,以及边上的容量,问1到n的最大流;

#include
#include
#include
#include
#includeusing namespace std;
#define inf 999999999;
const int N = 20;
int cap[N][N], flow[N][N];			//cap表示容量,flow表示当前流量; 
int a[N], p[N];			//a[i]表示从s到i的最小残量,p表示增广路上一节点; 
int n, m;int bfs(int s, int t)
{queueq;memset(flow, 0, sizeof(flow));int ans = 0;while(1){memset(a, 0, sizeof(a));a[s] = inf;q.push(s);while(!q.empty()){int u = q.front();q.pop();for(int v = 1;v<=n;v++){if(!a[v] && cap[u][v]>flow[u][v]){p[v] = u;a[v] = min(a[u], cap[u][v]-flow[u][v]);q.push(v);}}}if(a[t] == 0)break;for(int u = t;u!=s;u = p[u]){flow[p[u]][u]+=a[t];flow[u][p[u]]-=a[t];}ans+=a[t];}return ans;
}int main()
{int cas;int T = 0;scanf("%d", &cas);while(cas--){memset(cap, 0, sizeof(cap));scanf("%d%d", &n, &m);for(int i = 1;i<=m;i++){int u, v, w;scanf("%d%d%d", &u, &v, &w);cap[u][v]+=w;}printf("Case %d: %d\n", ++T, bfs(1, n));}return 0;
}

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...