hdu-1532
来源:互联网 发布:mac不能无线键盘 编辑:程序博客网 时间:2024/06/10 15:31
求最大流算法dinic 2
#include<stdio.h> // 最大流 Dinic 模版 2#include<string.h>#include<algorithm>using namespace std;#include<vector>#define INF 0x3f3f3f3f#include<queue>struct node{int to,cap,rev;};vector<node> v[300];int n,m;int level[300];//int iter[1100];void init(){for(int i=0;i<=n;i++)v[i].clear();}void bfs(int s){memset(level,-1,sizeof(level));level[s]=0;queue<int> q;q.push(s);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<v[u].size();i++){node e=v[u][i];if(e.cap>0&&level[e.to]<0){level[e.to]=level[u]+1;q.push(e.to);}}}}int dfs(int x,int t,int f){if(x==t) return f;int s=f; for(int i=0;i<v[x].size();i++){node &e=v[x][i];if(e.cap>0&&level[e.to]==level[x]+1){int k=dfs(e.to,t,min(f,e.cap));if(k>0){e.cap-=k;v[e.to][e.rev].cap+=k;f=f-k;}}}return s-f;}int main(){int i,j,k,t;while(~scanf("%d%d",&m,&n)){init();int star,end,cap;for(i=0;i<m;i++){scanf("%d%d%d",&star,&end,&cap);v[star].push_back((node){end,cap,v[end].size()});v[end].push_back((node){star,0,v[star].size() - 1});}int flow=0;while(1){bfs(1);if(level[n]<0)break;//memset(iter,0,sizeof(iter));//int f;//while((f=dfs(1,n,INF))>0)//flow+=f;flow+=dfs(1,n,INF);}printf("%d\n",flow);}return 0;}
#include<stdio.h> // 最大流 Dinic 模版 #include<string.h>#include<algorithm>using namespace std;#include<vector>#define INF 0x3f3f3f3f#include<queue>struct node{int to,cap,rev;};vector<node> v[300];int n,m;int level[300];int iter[1100];void init(){for(int i=0;i<=n;i++)v[i].clear();}void bfs(int s){memset(level,-1,sizeof(level));level[s]=0;queue<int> q;q.push(s);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<v[u].size();i++){node e=v[u][i];if(e.cap>0&&level[e.to]<0){level[e.to]=level[u]+1;q.push(e.to);}}}}int dfs(int x,int t,int f){if(x==t) return f;for(int &i=iter[x];i<v[x].size();i++){node &e=v[x][i];if(e.cap>0&&level[e.to]==level[x]+1){int k=dfs(e.to,t,min(f,e.cap));if(k>0){e.cap-=k;v[e.to][e.rev].cap+=k;return k;}}}return 0;}int main(){int i,j,k,t;while(~scanf("%d%d",&m,&n)){init();int star,end,cap;for(i=0;i<m;i++){scanf("%d%d%d",&star,&end,&cap);v[star].push_back((node){end,cap,v[end].size()});v[end].push_back((node){star,0,v[star].size() - 1});}int flow=0;while(1){bfs(1);if(level[n]<0)break;memset(iter,0,sizeof(iter));int f;while((f=dfs(1,n,INF))>0)flow+=f;}printf("%d\n",flow);}return 0;}
阅读全文
0 0
- hdu 1532
- hdu 1532
- HDU 1532
- HDU 1532
- hdu 1532
- HDU 1532
- hdu 1532
- hdu-1532
- HDU 1532 Drainage Ditches
- EK hdu 1532
- hdu 1532 Drainage Ditches
- HDU 1532 Drainage Ditches
- hdu 1532 Drainage Ditches
- HDU 1532 Drainage Ditches
- hdu 1532 Drainage Ditches
- hdu 1532Drainage Ditches
- hdu 1532 Drainage Ditches
- hdu 1532 Drainage Ditches
- [LeetCode] 225. Implement Stack using Queues
- 简单说说我集成科大讯飞遇到的坑
- UVA-508 Morse Mismatches(STL模拟)
- 框架设计的一些思考
- 三大主流框架的优缺点
- hdu-1532
- 模拟
- HDU5950Recursive sequence(构造矩阵+矩阵乘法)
- php使用session来控制仅有一个账号登录应用
- java和jQuery实现跨域
- python-数字 字符串 列表的转换
- LeetCode 383 Ransom Note
- Unity 基础常用的脚本(一)
- C/C++之常用字符串比较总结