落谷p3376 最大流EdmondsKarp增广路模板
参考:
https://blog.csdn.net/txl199106/article/details/64441994
分析:
该算法是用bfs求出是否有路从s到t, 然后建立反向边(关于反向边), 最终求出答案, 复杂度(mn)
#include<bits/stdc++.h>
using namespace std;
const int MAXN = + ;
const int MAXM = + ;
const int MAX_INT = ( << ); struct Edge {
int v, nxt, w;
}; struct Node {
int v, id;
}; int n, m, ecnt, S , T; // n , m , S , T 点,边,源点,汇点
bool vis[MAXN];
int head[MAXN];
Node pre[MAXN];
Edge edge[ * MAXM]; void init() {
ecnt = ;
memset(edge, , sizeof(edge));
memset(head, -, sizeof(head));
} void addEdge(int u, int v, int w) {
edge[ecnt].v = v;
edge[ecnt].w = w;
edge[ecnt].nxt = head[u];
head[u] = ecnt++;
} bool bfs(int s, int t) {
queue <int> que;
memset(vis, , sizeof(vis));
memset(pre, -, sizeof(pre));
pre[s].v = s;
vis[s] = true;
que.push(s);
while(!que.empty()) {
int u = que.front();
que.pop();
for(int i = head[u]; i + ; i = edge[i].nxt) {
int v = edge[i].v;
if(!vis[v] && edge[i].w) {
pre[v].v = u;
pre[v].id = i;
vis[v] = true;
if(v == t)
return true;
que.push(v);
}
}
}
return false;
} int EK(int s, int t) {
int ans = ;
while(bfs(s, t)) {
int mi = MAX_INT;
for(int i = t; i != s; i = pre[i].v) {
mi = min(mi, edge[pre[i].id].w);
}
for(int i = t; i != s; i = pre[i].v) {
edge[pre[i].id].w -= mi;
edge[pre[i].id ^ ].w += mi; //异或1的用处是 偶数+1, 奇数-1 (两条正反向边是相邻的
}
ans += mi;
}
return ans;
} int main() {
freopen("1.txt","r", stdin);
init();
ios::sync_with_stdio(false);
cin >> n >> m >> S >> T;
for(int i = ; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
addEdge(u, v, w);
addEdge(v, u, );
}
// 调用
cout << EK(S, T) << "\n";
}
// 加边
落谷p3376 最大流EdmondsKarp增广路模板的更多相关文章
- bzoj 5120 无限之环 & 洛谷 P4003 —— 费用流(多路增广SPFA)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 https://www.luogu.org/problemnew/show/P4003 ...
- 网络最大流最短增广路Dinic算法模板
#include<cstdio> #include<cstring> #include<string> #include<cmath> #include ...
- 网络最大流增广路模板(EK & Dinic)
EK算法: int fir[maxn]; int u[maxm],v[maxm],cap[maxm],flow[maxm],nex[maxm]; int e_max; int p[maxn],q[ma ...
- hdu 3549 Flow Problem【最大流增广路入门模板题】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...
- Power Network (最大流增广路算法模板题)
Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 20754 Accepted: 10872 Description A p ...
- 一般增广路方法求网络最大流(Ford-Fulkerson算法)
/* Time:2015-6-18 接触网络流好几天了 写的第一个模版————Ford-Fulkerson算法 作用:求解网络最大流 注意:源点是0 汇点是1 如果题目输入的是1到n 请预处理减1 * ...
- 【Luogu】P3381最小费用最大流模板(SPFA找增广路)
题目链接 哈 学会最小费用最大流啦 思路是这样. 首先我们有一个贪心策略.如果我们每次找到单位费用和最短的一条增广路,那么显然我们可以把这条路添加到已有的流量里去——不管这条路的流量是多大,反正它能 ...
- 网络流初步:<最大流>——核心(增广路算法)(模板)
增广路的核心就是引入了反向边,使在进行道路探索选择的时候增加了类似于退路的东西[有一点dp的味道??] 具体操作就是:1.首先使用结构体以及数组链表next[ MAXN ]进行边信息的存储 2.[核心 ...
- HDU3549 Flow Problem(网络流增广路算法)
题目链接. 分析: 网络流增广路算法模板题.http://www.cnblogs.com/tanhehe/p/3234248.html AC代码: #include <iostream> ...
随机推荐
- 094 Binary Tree Inorder Traversal 中序遍历二叉树
给定一个二叉树,返回其中序遍历.例如:给定二叉树 [1,null,2,3], 1 \ 2 / 3返回 [1,3,2].说明: 递归算法很简单,你可以通过迭代算法完成吗?详见 ...
- 杂谈 什么是伪共享(false sharing)?
问题 (1)什么是 CPU 缓存行? (2)什么是内存屏障? (3)什么是伪共享? (4)如何避免伪共享? CPU缓存架构 CPU 是计算机的心脏,所有运算和程序最终都要由它来执行. 主内存(RAM) ...
- 安卓linux真机调试
原文链接:https://www.zhihu.com/question/35517675 你使用的是Linux,请遵以下步骤执行. 以root用户执行adb kill-server 以root用户执行 ...
- drupal6提示 Compilation failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 9 on line 615
解决办法:将sites\all\modules\ctools\includes\cleanstring.inc文件中的61行改成62行这样子即可,如下图
- js原生子级元素阻止父级元素冒泡事件
<html> <head> <style type="text/css"> #hide{ width:75%;height:80px;backg ...
- 自己开发的在线视频下载工具,基于Java多线程
比如这个在线视频: 我们可以正常播放,但是找不到下载按钮. 打开Chrome开发者工具,在Network标签页里能看到很多网络传输请求: 随便看一个请求的响应,发现类型为video,大小为500多k. ...
- Eclipse Java类编辑器里出现乱码的解决方案
如图:在Java Class编辑器里出现的这种乱码,非常烦人. 解决方案:Windows->Preference->General->Appearance, 在里面将Theme设置成 ...
- 激励CEO们最好的办法就是鼓励他们不要停止思考
我们应该怎样在企业中释放出每一个人都可能内在的自我驱动力呢? 我创业十多年来,结识了很多创业家,他们中很多和我一样也试图通过学习实践找到有效管理的捷径,一个最简单的法则,最好还是比较容易的.事实上,最 ...
- Codeforces A ACM (ACronym Maker) (dp)
http://codeforces.com/gym/100650 概要:给出一个缩写,和一些单词,从单词中按顺序选一些字母作为缩写,问方案数. 限制:某些单词要忽略,每个单词至少要选一个字母. dp[ ...
- 集成iAd广告
在iPhone程序中集成广告,管他能不能赚钱,不放上一个iAd就心有不甘. 参考了下面这篇文章: http://bees4honey.com/blog/tutorial/how-to-add-iad- ...