题目:给出一个网络图,以及其源点和汇点,求出其网络最大流。

解法:网络流Dinic算法。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 #include<queue>
6 using namespace std;
7
8 const int N=10010,M=100010,INF=(int)1e9;
9 int n,m,st,ed,len=1;
10 int last[N],d[N];
11 struct edge{int y,fl,next;}a[2*M];
12 queue<int> q;
13
14 int mmin(int x,int y) {return x<y?x:y;}
15 void ins(int x,int y,int fl)
16 {
17 a[++len].y=y,a[len].fl=fl;
18 a[len].next=last[x],last[x]=len;
19 a[++len].y=x,a[len].fl=0;
20 a[len].next=last[y],last[y]=len;
21 }
22 bool bfs()
23 {
24 while (!q.empty()) q.pop();
25 memset(d,-1,sizeof(d));
26 q.push(st); d[st]=1;
27 while (!q.empty())
28 {
29 int x=q.front(); q.pop();
30 for (int i=last[x];i!=-1;i=a[i].next)
31 {
32 int y=a[i].y;
33 if (!a[i].fl || d[y]!=-1) continue;
34 d[y]=d[x]+1; q.push(y);
35 }
36 }
37 return (d[ed]!=-1);
38 }
39 int dfs(int x,int flow)
40 {
41 if (x==ed) return flow;
42 int sum=0;
43 for (int i=last[x];i!=-1;i=a[i].next)
44 {
45 int y=a[i].y;
46 if (d[y]!=d[x]+1 || !a[i].fl) continue;
47 int p=mmin(a[i].fl,flow-sum);
48 int tmp=dfs(y,p);
49 sum+=tmp;
50 a[i].fl-=tmp,a[i^1].fl+=tmp;
51 if (sum==flow) break;
52 }
53 if (!sum) d[x]=-1;
54 return sum;
55 }
56 int Max_flow()
57 {
58 int sum=0,p;
59 while (bfs())
60 while (p=dfs(st,INF)) sum+=p;
61 return sum;
62 }
63 int main()
64 {
65 scanf("%d%d%d%d",&n,&m,&st,&ed);
66 int x,y,d;
67 memset(last,-1,sizeof(last));
68 for (int i=1;i<=m;i++)
69 {
70 scanf("%d%d%d",&x,&y,&d);
71 ins(x,y,d);
72 }
73 printf("%d\n",Max_flow());
74 return 0;
75 }

最新文章

  1. xcode8插件无法使用
  2. STM32的USART
  3. jsp项目与mysql链接
  4. 用php实现遍历目录
  5. js里的原型
  6. 你猜&hellip;&hellip;你再猜
  7. cocos2d-js屏幕任何位置点击开始的实现
  8. 【C#学习笔记】获得系统时间
  9. hadoop_并行写操作思路_2
  10. vim 语法高亮
  11. Java学习的随笔(2)Java语言的三大特性
  12. html5实例-闪烁的星星
  13. Spring Security教程系列(一)基础篇-2
  14. 201521123117 《Java程序设计》第9周学习总结
  15. 使用XML设计某大学主页站点地图--ASP.NET
  16. [ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置
  17. Android开发技巧——自定义单选或多选的ListView
  18. PHP中的__get和__set理解
  19. [UE4]瞬移对象
  20. SQL语句计算距离今天生日还差几天

热门文章

  1. db_install.rsp dbca.rsp netca.rsp 详解【转】
  2. JVM 源码分析(三):深入理解 CAS
  3. springboot异常处理之404
  4. js 判断用户是手机端还是电脑端访问
  5. maven仓库和镜像
  6. 什么是xss攻击
  7. D2Admin 登录用户重新初始话右侧菜单
  8. 如何实现微信小程序动画?添加到我的小程序动画实现详细讲解,轻松学会动画开发!附壁纸小程序源码下载链接
  9. SparkStreaming和Kafka基于Direct Approach如何管理offset实现exactly once
  10. java 利用异或^进行加密