栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1273 Drainage Ditches

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1273 Drainage Ditches

#include <stdio.h>#include <string.h>#include <queue>using namespace std;#define MAXN 210#define INF 0x3f3f3f3fstruct Edge{int st, ed;int c;int next;}edge[MAXN << 1];int n, m;int s, t;int ans;int e = 0; int head[MAXN];int d[MAXN];int min(int a, int b){return a < b ? a : b;}void init(){int i, j;int a, b, c; s = 1;t = m;e = 0;ans = 0;memset(head, -1, sizeof(head));for(i = 1; i <= n; i++){scanf("%d%d%d", &a, &b, &c);edge[e].st = a;edge[e].ed = b;edge[e].c = c;edge[e].next = head[a];head[a]= e++;edge[e].st = b;edge[e].ed = a;edge[e].next = head[b];head[b] = e++;}}int bfs(){memset(d, -1, sizeof(d));queue<int> q;d[s] = 0;q.push(s);int i;int cur;while(!q.empty()){cur = q.front();q.pop();for(i = head[cur]; i != -1; i = edge[i].next){if(d[edge[i].ed] == -1 && edge[i].c > 0){d[edge[i].ed] = d[cur] + 1; q.push(edge[i].ed);}}}if(d[t] < 0)return 0;return 1;}int dinic(int x, int flow){if(x == t)return flow;int i, a;for(i = head[x]; i != -1; i = edge[i].next){if(d[edge[i].ed] == d[x] + 1 && edge[i].c > 0 && (a = dinic(edge[i].ed, min(flow, edge[i].c)))){edge[i].c -= a;edge[i ^ 1].c += a;return a;}}return 0;}void solve(){while(scanf("%d%d", &n, &m) != EOF){init();while(bfs()){int increment;increment = dinic(1, INF);ans +=  increment; }printf("%dn", ans);}}int main(){solve();return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号