文章标题 HDU 3549 : Flow Problem (最大流--模板)
来源:互联网 发布:信用卡名单数据库 编辑:程序博客网 时间:2024/05/26 05:52
题目 链接
求点1到N 的最大流
代码:
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<vector>#include<math.h>#include<map>#include<queue> #include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;typedef pair<int,int> pii;const int maxn=1006<<1;int n,m;struct node { int v,nex,cap,flow;};struct Dinic{ int head[maxn]; int st,la;//源点和汇点 int vis[maxn],tot; node edge[maxn]; void init(){ tot=0; memset (head,-1,sizeof (head)); } void addedge(int u,int v,int c){ edge[tot]=node{v,head[u],c,0}; head[u]=tot++; edge[tot]=node{u,head[v],0,0}; head[v]=tot++; } int bfs(){ memset (vis,0,sizeof (vis)); queue<int>q; q.push(st); vis[st]=1; while (!q.empty()){ int u=q.front();q.pop(); for (int i=head[u];i!=-1;i=edge[i].nex){ int v=edge[i].v,cap=edge[i].cap,flow=edge[i].flow; if(vis[v]==0&&cap>flow){ vis[v]=vis[u]+1; if (v==la){ return 1; } q.push(v); } } } return 0; } int dfs(int u,int flow){ if (u==la||flow==0){ return flow; } int ans=0,tmp; for (int i=head[u];i!=-1;i=edge[i].nex){ int v=edge[i].v,cap=edge[i].cap,f=edge[i].flow; if ((vis[v]==vis[u]+1)&&(tmp=dfs(v,min(cap-f,flow)))>0){ edge[i].flow+=tmp; edge[i^1].flow-=tmp; ans+=tmp; flow-=tmp; if (flow==0)break; } } return ans; } int max_flow(int s,int t){ this->st=s; this->la=t; int ans=0; while (bfs()){ while (1){ int tmp=dfs(st,inf); if (tmp==0)break; ans+=tmp; } } return ans; }}dinic;int main (){ int T; scanf ("%d",&T); int cnt=1; while(T--){ dinic.init(); scanf ("%d%d",&n,&m); int u,v,c; for (int i=0;i<m;i++){ scanf ("%d%d%d",&u,&v,&c); dinic.addedge(u,v,c); } printf ("Case %d: %d\n",cnt++,dinic.max_flow(1,n)); } return 0;}
阅读全文
0 0
- 文章标题 HDU 3549 : Flow Problem (最大流--模板)
- hdu 3549 Flow Problem(最大流模板题)
- [ACM] 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(最大流)
- 【最大流+模板题】杭电 hdu 3549 Flow Problem
- hdu 3549 Flow Problem(最大流EK算法模板)
- HDU 3549 Flow Problem 最大流模板题
- HDU 3549 Flow Problem 最大流模板题
- HDU 3549 Flow Problem【最大流模板题,EK算法】
- HDU 3549 Flow Problem(最大流+EK邻接表||邻接矩阵||dinic算法模板比较)
- HDOJ-3549 Flow Problem (最大流模板)
- HDU-3549 Flow Problem【最大流】
- maven配置jdk1.8编码为UTF-8的pom.xml
- collectionView 自动调整cell大小
- zookeeper原理
- 关于SVN的常用命令与新手常见问题
- Hadoop 源码解析-rpc扩展
- 文章标题 HDU 3549 : Flow Problem (最大流--模板)
- 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
- python中random模块
- 线段树专题
- 《ORACLE生产环境RAC下部署DG》-----Pure Love
- 微信小程序—自定义模态对话框实例
- Kmp算法
- tomcat启动报错后设置环境变量配置的为jdk1.7 但是用java -version查看版本却是1.8的解决方法
- [MyBatis]MyBatis入门(一)