POJ1273
来源:互联网 发布:网络客服工资怎么算 编辑:程序博客网 时间:2024/06/08 11:05
POJ1273 Drainage Ditches
Description
一次下雨淹了Bessie的田,所以FJ建了个排水系统帮Bessie排水到。
整个排水系统由
除起点和终点每个点每的排水量和入水量要一致,时刻每条管道有一个单位时间最大排水量
Bessie的田就是起点
求单位时间整个排水系统单位时间最大排水量。
Input
第一行:两个整数,
接下来
每行三个整数,
Output
一行:一个整数,最大排水量。
solution
网络流裸题
code
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define oo 1000000000//#include<using namespace std;int m,n,ans;// instruct Edge{ int ap,v; Edge *next,*fe;}edge[510],*ind[210];int l=0;void input(int f,int t,int c){ edge[++l].ap=t; edge[l].v=c; edge[l].next=ind[f]; ind[f]=&edge[l]; edge[++l].ap=f; edge[l].v=0; edge[l].next=ind[t]; ind[t]=&edge[l]; edge[l].fe=&edge[l-1]; edge[l-1].fe=&edge[l];}//int q[210],level[210]; //bfs构层次图bool bfs(){ memset(q,0,sizeof(q)); memset(level,0,sizeof(level)); int h=1,t=2; q[h]=1; level[1]=1; while(h<t) { Edge *k=ind[q[h]]; for(;k!=NULL;k=k->next) { if(k->v==0||level[k->ap]!=0) continue; q[t++]=k->ap; level[k->ap]=level[ q[h] ]+1; } h++; } return level[m]!=0 ? 1:0;}int dfs(int x,int maxin) //找增广路{ if(x==m) return maxin; int sum=0; Edge *i=ind[x]; for(;i!=NULL;i=i->next) { if(maxin==sum) break; if(level[i->ap]<=level[x]||!i->v) continue; int k=dfs(i->ap,min(maxin-sum,i->v)); i->v-=k; i->fe->v+=k; sum+=k; } if(sum!=maxin) level[u]=0; //当前弧优化 return sum;}//int main(){ scanf("%d%d",&n,&m); int l=1; for(int i=1;i<=n;i++) { int f,t,c; scanf("%d%d%d",&f,&t,&c); input(f,t,c); } while(bfs()) ans+=dfs(1,oo); printf("%d",ans); return 0;}
0 0
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- poj1273
- POJ1273
- poj1273
- POJ1273
- poj1273 EK
- POJ1273 Drainage Ditches
- POJ1273(最大流)
- poj1273 Drainage Ditches
- c51矩阵键盘
- UVaLive3211
- skiing
- sigmoid function vs softmax function
- C# Socket Tcp 语音通讯程序设计
- POJ1273
- 3576: [Hnoi2014]江南乐
- HDU5936 Difference 【中途相遇法】
- [LeetCode]222. Count Complete Tree Nodes
- 文章标题
- Q102:光线追踪场景(2)——PLYs(多种模型汇集)
- 队列模拟实现
- 算法学习之路(3):二分查找法
- HTML5中的Canvas元素