NYOJ 323 Drainage Ditches 最大流 Dinic 算法模板
来源:互联网 发布:单片机计分牌课设 编辑:程序博客网 时间:2024/06/12 23:36
题意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.一道基础的最大流题目
//Dinic#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int VM=220;const int INF=0x3f3f3f3f;int n,m,src,des;int map[VM][VM],dep[VM]; //dep[i]表示当前点到起点src的层数int BFS(){ // 重新建图(按层数建图) queue<int> q; while(!q.empty()) q.pop(); memset(dep,-1,sizeof(dep)); dep[src]=0; q.push(src); while(!q.empty()){ int u=q.front(); q.pop(); for(int v=1;v<=m;v++) if(map[u][v]>0 && dep[v]==-1){ // 如果可以到达且还没有访问 dep[v]=dep[u]+1; q.push(v); } } return dep[des]!=-1;}int DFS(int u,int minx){ // 查找路径上的最小的流量 if(u==des) return minx; int tmp; for(int v=1;v<=m;v++) if(map[u][v]>0 && dep[v]==dep[u]+1 && (tmp=DFS(v,min(minx,map[u][v])))){ map[u][v]-=tmp; //正向减少 map[v][u]+=tmp; //反向增加 return tmp; } return 0;}int Dinic(){ int ans=0,tmp; while(BFS()){ while(1){ tmp=DFS(1,INF); if(tmp==0) break; ans+=tmp; } } return ans;}int main(){ //freopen("input.txt","r",stdin); while(~scanf("%d%d",&n,&m)){ memset(map,0,sizeof(map)); int u,v,w; for(int i=0;i<n;i++){ scanf("%d%d%d",&u,&v,&w); map[u][v]+=w; //防止有重边 } src=1, des=m; printf("%d\n",Dinic()); } return 0;}
0 0
- NYOJ 323 Drainage Ditches 最大流 Dinic 算法模板
- nyoj 323 Drainage Ditches(dinic模板)
- HDU1532 Drainage Ditches 最大流Dinic模板
- poj1273 Drainage Ditches 最大流 dinic算法
- POJ1273 Drainage Ditches 最大流模板题(dinic)
- POJ 1273 --Drainage Ditches【最大流模板 && dinic】
- poj1273 Drainage Ditches(最大流EKarp+Dinic+模板总结)
- 【poj 1273】Drainage Ditches 最大流dinic模板
- POj 1273 Drainage Ditches (最大流 Dinic + ISAP 模板)
- POJ 1273 Drainage Ditches—网络流,最大流模板题,Dinic算法
- hdu 1532 Drainage Ditches 网络最大流模板 EK + Dinic两种算法AC
- hdu 1532 Drainage Ditches 最大流 dinic算法
- 最大网络流dinic算法—【hdoj1532】Drainage Ditches
- poj 1273 hdu 1532 Drainage Ditches 最大流dinic 算法
- poj 1273 Drainage Ditches--最大流--Dinic
- poj 1273 Drainage Ditches (最大流Dinic)
- [hdu 1532] Drainage Ditches(最大流dinic)
- POJ 1273 Drainage Ditches 最大流 dinic
- 【LeetCode】413. Arithmetic Slices
- 了解linux网络协议栈(一)——内核模块初始化
- 最小生成树C++模板
- 题目1439:Least Common Multiple
- ~元素出栈、入栈顺序的合法性~
- NYOJ 323 Drainage Ditches 最大流 Dinic 算法模板
- poj2478 (欧拉函数)
- maven3.3.9配置jetty9.4嵌入式启动
- (ZT)udp发包收包的例子
- Myeclipse SVN更新与提交
- 括号匹配
- 假期跟我一起写一个点对点VPN-SimpleVPN详解
- 小程序开发系列之基础部分-基础部分
- opencv学习之Shi-Tomasi角点检测