【最大流FF模板】HDU1532&POJ1273
2016-01-23 14:54
435 查看
参照《挑战程序设计竞赛》
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> #include<vector> using namespace std; const int MAXN=1100; const int INF=0x7fffffff; int n,m;//n:edges,m:points struct node { int to,pos,cap; }; vector<node> E[MAXN]; int vis[MAXN]; void addedge(int u,int v,int w) { E[u].push_back((node){v,E[v].size(),w}); E[v].push_back((node){u,E[u].size()-1,0}); } int dfs(int s,int t,int f) { if (s==t) return f; vis[s]=1;//不要忘记这里要设置为访问过 for (int i=0;i<E[s].size();i++) { node &tmp=E[s][i]; if (vis[tmp.to]==0 && tmp.cap>0) { int delta=dfs(tmp.to,t,min(tmp.cap,f)); if (delta>0) { tmp.cap-=delta; E[tmp.to][tmp.pos].cap+=delta; return delta; } } } return 0; } int maxflow(int u,int v) { int flow=0; for (;;) { memset(vis,0,sizeof(vis)); int f=dfs(u,v,INF); if (f==0) return flow; else flow+=f; } } int main() { while(~scanf("%d%d",&n,&m)) { memset(E,0,sizeof(E)); for (int i=0;i<n;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); addedge(x,y,z); } cout<<maxflow(1,m)<<endl; } return 0; }
相关文章推荐
- 【委托】——动态决定使用何方法
- linux下如何设置环境变量PATH的多种方式
- underscorejs-map学习
- 面向服务开发(SOA)
- 《转》VMware vSphere 5.1 学习系列之二:安装 Openfiler 存储
- 修改exe应用程序属性
- JavaScript 通过 WebView 调用 Android Text to Speech API
- UI_标签导航控制器
- underscorejs-each学习
- Extreme Programming (XP)介绍
- Leetcode 35. Search Insert Position
- noitisoPtresnIhcraeS.35
- HDU2057
- 设计模式——创建型模式
- 《转》VMware vSphere 5.1 学习系列之一:实验环境的搭建
- iOS里Toll-Free Bridging的桥接机制
- UI_协议传值
- Unity5.3 AssetBundleName批量赋值
- 经典的GDB调试命令
- Java设计模式之策略模式(一)