poj1273 Drainage Ditches (最大流模板)
http://poj.org/problem?id=1273
Dinic算法
这是一道最大流的经典题
最大流尽量应该用边表,优于邻接矩阵(所以我写了邻接矩阵版的之后又写了个边表)
用了新学的Dinic算法
在每次找增广路之前先跑一遍bfs,把所有点的深度标记,按bfs记下的顺序找增广路,这条增广路上最小的边容量就是这条增广路的最大费用
跑出一条增广路之后,就开始更新现在的边剩余的容量,并建立反向边。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n,m,map[][],ans,pre[];
void Flow(int s,int t){
while(){
queue<int>q;
q.push();
memset(pre,,sizeof(pre));
while(!q.empty()){
int point=q.front();
q.pop();if(point==t)break;
for(int i=;i<=n;i++){
if(map[point][i]&&!pre[i])pre[i]=point,q.push(i);
}
}if(pre[t]==)break;
int so=0x7fffffff;
for(int i=t;i!=s;i=pre[i]){
so=min(so,map[pre[i]][i]);
}ans+=so;
for(int i=t;i!=s;i=pre[i]){
map[i][pre[i]]+=so;
map[pre[i]][i]-=so;
}
}
}
int main(){
while(scanf("%d%d",&m,&n)!=EOF){
int f,t,v;
memset(map,,sizeof(map));
for(int i=;i<=m;i++){
scanf("%d%d%d",&f,&t,&v);
map[f][t]+=v;
}
ans=;
Flow(,n);
printf("%d\n",ans);
}
}
poj1273 Drainage Ditches (最大流模板)的更多相关文章
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- poj-1273 Drainage Ditches(最大流基础题)
题目链接: Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 67475 Accepted ...
- POJ-1273 Drainage Ditches 最大流Dinic
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65146 Accepted: 25112 De ...
- POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)
http://poj.org/problem?id=1273 Description Every time it rains on Farmer John's fields, a pond forms ...
- poj1273 Drainage Ditches (最大流板子
网络流一直没学,来学一波网络流. https://vjudge.net/problem/POJ-1273 题意:给定点数,边数,源点,汇点,每条边容量,求最大流. 解法:EK或dinic. EK:每次 ...
- [poj1273]Drainage Ditches(最大流)
解题关键:最大流裸题 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...
- POJ 1273 Drainage Ditches | 最大流模板
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #defi ...
- poj1273 Drainage Ditches Dinic最大流
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 76000 Accepted: 2953 ...
- Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )
题目链接:poj1273 Drainage Ditches 呜呜,今天自学网络流,看了EK算法,学的晕晕的,留个简单模板题来作纪念... #include<cstdio> #include ...
- 2018.07.06 POJ1273 Drainage Ditches(最大流)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Description Every time it rains on Farmer J ...
随机推荐
- Bootstrap——组件
1.字体图标 <span class="glyphicon glyphicon-star" aria-hidden="true"></span ...
- Vue:实践学习笔记(5)——Vue-Cli脚手架的使用
Vue:实践学习笔记(5)——Vue-Cli脚手架的使用 快速开始 项目配置 可视化配置 vue ui 命令配置 vue init webpack vue-demo(项目名) 运行测试 进入vue-d ...
- 怎么样写一个能告诉你npm包名字是否被占用的工具
事情是这样的: 因为我经常会写一些npm包,但是有时候我写完一个包,npm publish 的时候却被提示说包名字被占用了,要不就改名字,要不就加scope,很无奈.npm 命令行可以通过 npm v ...
- NET LOCALGROUP命令详解(将用户添加到管理员组等)
NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"tex ...
- Java接口 详解(一)
一.基本概念 接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合.接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 如果一个类只由 ...
- 使用同一个目的port的p2p协议传输的tcp流特征相似度计算
结论: (1)使用同一个目的port的p2p协议传输的tcp流特征相似度高达99%.如果他们是cc通信,那么应该都算在一起,反之就都不是cc通信流. (2)使用不同目的端口的p2p协议传输的tcp流相 ...
- 剑指OFFER18 判断一个二叉树的子树
public class a18_IsSubTree { public static boolean hasSubTree(TreeNode treeRoot1, TreeNode treeRoot2 ...
- android自定义控件(二) 入门,继承View
转载请注明地址:http://blog.csdn.net/ethan_xue/article/details/7313788 ps: 可根据apidemo里LableView,list4,list6学 ...
- sed根据关键字注释crontab的计划任务
[root@linux06 ~]# crontab -e*/5 * * * * /root/time_test.sh ----------------------------------------- ...
- ZOJ1905Power Strings (KMP||后缀数组+RMQ求循环节)
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...