poj 1273Drainage Ditches(简单网络流(用dinic))
来源:互联网 发布:淘宝上开店怎么找货源 编辑:程序博客网 时间:2024/05/22 04:58
//poj 1273Drainage Ditches(简单网络流(用dinic))#include<iostream>#include<cstdio>#include<vector>#include<string.h>#include<queue>using namespace std;const int N=500;const int INF=1<<30;int Min(int a,int b){return a<b?a:b;}//==============邻接表==================struct Edge{ int from,to,cap,flow;};struct Dinic{ int start,end,n,m; vector<Edge> edges; vector<int> G[N];//邻接表 void AddEdge(int from,int to,int cap) { Edge e; e.from=from;e.cap=cap;e.to=to;e.flow=0; edges.push_back(e); e.from=to;e.cap=0;e.to=from;e.flow=0; edges.push_back(e); int m1=edges.size(); G[from].push_back(m1-2); G[to].push_back(m1-1); }//=============================== int vis[N]; int d[N]; int cur[N];//=========分层次================== bool BFS() { memset(vis,0,sizeof(vis)); queue<int> q; q.push(start); d[start]=0; vis[start]=1; while(!q.empty()) { int x=q.front();q.pop(); for(int i=0;i<G[x].size();i++) { Edge &e=edges[G[x][i]]; if(!vis[e.to]&&e.cap>e.flow) { vis[e.to]=1; d[e.to]=d[x]+1; q.push(e.to); } } } return vis[end]; }//=============================== int DFS(int x,int a) { if(x==end||a==0) return a; int flow=0,f; for(int i=0;i<G[x].size();i++) { Edge& e=edges[G[x][i]]; if(d[x]+1==d[e.to]&&(f=DFS(e.to,Min(a,e.cap-e.flow)))>0) { e.flow+=f; edges[G[x][i]^1].flow-=f; flow+=f; a-=f; if(a==0) break; } } return flow; } int Maxflow(int s,int t) { start=s;end=t; int flow=0; while(BFS()) { memset(cur,0,sizeof(cur)); flow+=DFS(s,INF); } return flow; }};int main(){ Dinic flo,te; while(scanf("%d%d",&flo.m,&flo.n)!=EOF) { int a,b,c; for(int i=0;i<flo.m;i++) { scanf("%d%d%d",&a,&b,&c); flo.AddEdge(a,b,c); } printf("%d\n",flo.Maxflow(1,flo.n)); flo=te; //cout<<INF<<endl; } return 0;}
0 0
- poj 1273Drainage Ditches(简单网络流(用dinic))
- POJ 1273~Drainage Ditches(网络最大流ek,dinic)
- POJ 1273 Drainage Ditches(网络流【Dinic算法】)
- POJ 1273 Drainage Ditches 题解与分析<网络流DINIC>
- poj 1273--Drainage Ditches [网络流dinic算法]
- POJ 1273 Drainage Ditches (网络流 EK && Dinic)
- poj 1273 Drainage Ditches 经典网络流 Dinic算法
- poj 1273 Drainage Ditches 网络流 Edmond Karp || Dinic
- 【POJ 1273 Drainage Ditches】& 网络流 & Dinic 算法
- poj 1273 Drainage Ditches--最大流--Dinic
- poj 1273 Drainage Ditches (最大流Dinic)
- POJ 1273 Drainage Ditches 最大流 dinic
- POJ-1273 Drainage Ditches 最大流Dinic
- poj 1273 Drainage Ditches【最大流 dinic】
- POJ 1273 Drainage Ditches (dinic模板)
- POJ 1273 Drainage Ditches(dinic模板)
- poj 1273 Drainage Ditches(最大流 dinic模版)
- 【最大流(dinic)】poj 1273 Drainage Ditches
- txt 转换为 html 解析文本 自动打上标签
- 双链表的基本操作
- 谬论之程序员的眼光看世界
- Java-Map集合
- HDU 1114 (dp 完全背包)
- poj 1273Drainage Ditches(简单网络流(用dinic))
- throw er; // Unhandled 'error' event
- 云计算平台管理的三大利器Nagios、Ganglia和Splunk
- Fiddler 教程
- zoj 3747
- C++ 多态 以及实现多态的三种方式
- opencv播放器和摄像头视频播放
- 开源服务器openfire研究之开篇
- jquery复制数组