HDU 3549 Flow Problem(网络流模板题)
来源:互联网 发布:如何看软件版本 编辑:程序博客网 时间:2024/05/21 10:47
记录一下模板
#include <vector>#include <cstring>#include <algorithm>#include <cstdio>#include <queue>using namespace std;#define maxn 1100#define INF 0x7f7f7f7fstruct Edge { int from,to,cap,flow;};struct Dinic { int n,m,s,t; vector<Edge>edges; vector<int>G[maxn]; bool vis[maxn]; int d[maxn]; int cur[maxn]; void addEdge(int from,int to,int cap) { edges.push_back((Edge) {from,to,cap,0}); edges.push_back((Edge) {to,from,0,0}); m=edges.size(); G[from].push_back(m-2); G[to].push_back(m-1); } void init(){ edges.clear(); for(int i=1;i<=maxn;i++) G[i].clear(); } bool Bfs() { memset(vis,0,sizeof(vis)); queue<int>Q; while(!Q.empty()) Q.pop(); Q.push(s); d[s]=0; vis[s] = 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[t]; } int dfs(int x,int a) { if(x==t||a==0) return a; int flow = 0,f; for(int &i=cur[x]; 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) { this->s=s; this->t=t; int flow = 0; while(Bfs()) { memset(cur,0,sizeof(cur)); flow+=dfs(s,INF); } return flow; }};int main(){ int T; int n,k; Dinic slove; while(scanf("%d",&T)==1){ int cas=0; while(T--){ scanf("%d%d",&n,&k); slove.init(); while(k--){ int x,y,z; scanf("%d%d%d",&x,&y,&z); slove.addEdge(x,y,z); } printf("Case %d: %d\n",++cas,slove.maxflow(1,n)); } }}
0 0
- HDU 3549 Flow Problem(网络流模板题)
- hdu 3549 Flow Problem(最大流模板题)
- [ACM] hdu 3549 Flow Problem (最大流模板题)
- hdu 3549 Flow Problem(最大流模板题)
- Flow Problem hdu 3549 网络流模板题目
- HDU 3549 Flow Problem(网络流之最大流模板题)
- 【最大流+模板题】杭电 hdu 3549 Flow Problem
- HDU 3549 Flow Problem 最大流模板题
- HDU 3549 Flow Problem 最大流模板题
- HDU 3549 Flow Problem【最大流模板题,EK算法】
- HDU-3549 Flow Problem (最大流模板)
- 文章标题 HDU 3549 : Flow Problem (最大流--模板)
- HDU 3549 Flow Problem 最大网络流
- hdu 3549 最大网络流 Flow Problem
- 网络流 HDU 3549 Flow Problem
- hdu 3549 Flow Problem 网络流
- HDU 3549 Flow Problem [网络流]
- HDU--3549 Flow Problem 网络流
- Zookeeper 的学习
- Ubuntu14.04密码正确 进不去桌面系统(已测试恢复正常)
- 【阅读】《head first html5》第三章——事件与处理程序
- 小米2/2S总提示存储空间不足?手把手教你修改内存!
- StringBuilder append方法源码分析
- HDU 3549 Flow Problem(网络流模板题)
- Java设计模式之装饰者模式
- 取出二进制的某些位
- input按键输入源码分析
- MySqlBackup.NET - MySQL Backup Solution for C#, VB.NET, ASP.NET
- postgresql 去除
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
- Search in Rotated Sorted Array
- 黑马66期android学习笔记17_短信发送器