博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络流算法汇总
阅读量:4597 次
发布时间:2019-06-09

本文共 1883 字,大约阅读时间需要 6 分钟。

Dinic:

1 #include 
2 3 using namespace std; 4 5 const int MAXN = 1e5 + 5, inf = 0x7f7f7f7f; 6 7 struct edge { 8 int to, nxt, cap; 9 } edges[MAXN << 1];10 11 int head[MAXN], level[MAXN], cur[MAXN], n, m, s, t, cnt = 0;12 13 inline void addedge(int from, int to, int cap) {14 edges[cnt].to = to, edges[cnt].nxt = head[from];15 edges[cnt].cap = cap, head[from] = cnt++;16 edges[cnt].to = from, edges[cnt].nxt = head[to];17 edges[cnt].cap = 0, head[to] = cnt++;18 }19 20 queue
que;21 int getlevel() {22 memset(level, 0, sizeof(level));23 for(int i = 1; i <= n; i++) cur[i] = head[i];24 level[s] = 1; que.push(s);25 while(!que.empty()) {26 for(int i = head[que.front()]; i != -1; i = edges[i].nxt)27 if(!level[edges[i].to] && edges[i].cap) {28 level[edges[i].to] = level[que.front()] + 1;29 que.push(edges[i].to);30 }31 que.pop();32 }33 return level[t];34 }35 36 int impflow(int now, int ff) {37 if(now == t) return ff;38 int flow = 0, resi;39 for(int &i = cur[now]; i != -1; i = edges[i].nxt)40 if(edges[i].cap && level[edges[i].to] > level[now] &&41 (resi = impflow(edges[i].to, min(ff, edges[i].cap)))) {42 edges[i].cap -= resi; edges[i ^ 1].cap += resi;43 flow += resi; ff -= resi;44 if(!ff) break;45 }46 return flow;47 }48 49 int getmaxflow() {50 int maxflow = 0;51 while(getlevel()) maxflow += impflow(s, inf);52 return maxflow;53 }54 55 int main() {56 memset(head, 0xff, sizeof(head));57 int x, y, z;58 scanf("%d%d%d%d", &n, &m, &s, &t);59 while(m--) scanf("%d%d%d", &x, &y, &z), addedge(x, y, z);60 printf("%d\n", getmaxflow());61 return 0;62 }
View Code

 

转载于:https://www.cnblogs.com/zhylj/p/9515486.html

你可能感兴趣的文章
jQuery实现可编辑表格
查看>>
Java实验三
查看>>
算法的评价
查看>>
python学习笔记(二)
查看>>
综合云平台 - GlusterFS - 03
查看>>
地球总在不停地转,时间总是不停地走
查看>>
3章 项目属性配置
查看>>
10 华电内部文档搜索系统 search05
查看>>
InterlliJ IDEA 创建maven的web项目并部署
查看>>
提交到SVN中的项目被删除 且项目名已经被新建项目占用找回方法
查看>>
Word2010_2003页眉有条横线怎么删掉
查看>>
qwq
查看>>
简述MVC思想与PHP如何实现MVC
查看>>
python之旅:常用模块
查看>>
android 练习之路 (五)
查看>>
matplotlib——pyplot和pylab区别
查看>>
Promise异步编程模式总结
查看>>
做网站用UTF-8编码还是GB2312编码?
查看>>
在ant编译java文件时产生debug信息
查看>>
深入理解计算机系统--信号
查看>>