#include<iostream>
/*
题意:就是寻找从源点到汇点的最大流!
要注意的是每两个点的流量可能有多个,也就是说有重边,所以要把两个点的所有的流量都加起来
就是这两个点之间的流量了! 思路:建图之后直接套用最大流算法(EK, 或者是Dinic算法) 图解Dinic算法流程!

*/
#include<queue>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define INF 0x3f3f3f3f3f3f3f3f
#define N 205
using namespace std;
typedef long long LL;
LL cap[N][N]; int m, n;
LL maxFlow;
int d[N];
queue<int>q; bool bfs(){
q.push();
memset(d, , sizeof(d));
d[]=;
while(!q.empty()){
int u=q.front();
q.pop();
for(int v=; v<=n; ++v)
if(!d[v] && cap[u][v]>){
d[v]=d[u]+;
q.push(v);
}
}
if(!d[n]) return false;
return true;
} LL dfs(int u, LL flow){
if(u==n) return flow;
for(int v=; v<=n; ++v)
if(d[v]==d[u]+ && cap[u][v]>){
LL a=dfs(v, min(flow, cap[u][v]));
if(a==) continue;//如果a==0 说明没有找到从起点到汇点的增广路, 然后换其他路接着寻找!
cap[u][v]-=a;
cap[v][u]+=a;
return a;
}
return ;
} void Dinic(){
LL flow;
while(bfs()){//利用bfs构造好层次图,这样dfs在寻找阻塞流的时候,就不会盲目的寻找了!
while(flow=dfs(, INF)) maxFlow+=flow;//利用构造好的层次图不断的寻找阻塞流!
}
} int main(){
while(scanf("%d%d", &m, &n)!=EOF){
memset(cap, , sizeof(cap));
while(m--){
int u, v;
LL w;
scanf("%d%d%lld", &u, &v, &w);
cap[u][v]+=w;
}
maxFlow=;
Dinic();
printf("%lld\n", maxFlow);
}
return ;
}
 //EK算法同样搞定
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
typedef __int64 LL;
LL cap[][];
int pre[];
LL a[];
int m, n;
queue<int>q;
LL maxFlow;
bool spfa(){
while(!q.empty()) q.pop();
memset(a, , sizeof(a));
q.push();
a[]=INF;
while(!q.empty()){
int u=q.front();
q.pop();
for(int v=; v<=n; ++v)
if(!a[v] && cap[u][v]>){
pre[v]=u;
a[v]=min(a[u], cap[u][v]);
q.push(v);
}
if(a[n]) break;
}
if(!a[n]) return false;
return true;
} void EK(){
maxFlow=;
while(spfa()){
int u=n;
maxFlow+=a[n];
while(u!=){
cap[pre[u]][u]-=a[n];
cap[u][pre[u]]+=a[n];
u=pre[u];
}
}
}
int main(){
while(scanf("%d%d", &m, &n)!=EOF){
memset(cap, , sizeof(cap));
while(m--){
int u, v;
LL w;
scanf("%d%d%I64d", &u, &v, &w);
cap[u][v]+=w;
}
EK();
printf("%I64d\n", maxFlow);
}
return ;
}

poj1273Drainage Ditches的更多相关文章

  1. POJ1273Drainage Ditches[最大流]

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 71559   Accepted: 2784 ...

  2. POJ-1273-Drainage Ditches(网络流之最大流)

    Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This ...

  3. POJ-1273-Drainage Ditches 朴素增广路

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 70588   Accepted: 2743 ...

  4. 图论-网络流-最大流--POJ1273Drainage Ditches(Dinic)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 91585   Accepted: 3549 ...

  5. POJ-1273Drainage Ditches(网络流入门题,最大流)

    Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This ...

  6. poj1273--Drainage Ditches(最大流Edmond-Karp算法 邻接表实现)

    最大流模板题 大部分Edmond-Karp算法代码都是邻接矩阵实现,试着改成了邻接表. #include <iostream> #include <cstdio> #inclu ...

  7. 【最大流Dinic模板】HDU1532&POJ1273-Drainage Ditches(16/3/6更正)

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  8. POJ 1273 Drainage Ditches题解——S.B.S.

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 67823   Accepted: 2620 ...

  9. I:trainage Ditches

    总时间限制: 1000ms 内存限制: 65536kB描述Every time it rains on Farmer John's fields, a pond forms over Bessie's ...

随机推荐

  1. H264与RTP

    http://blog.163.com/laorenyuhai126@126/blog/static/1935077920111218152989/

  2. 萝卜白菜,给有所爱——C#和JAVA都会终将被时代淘汰

    看到园子里又有一波试图掀起C#和JAVA的谁更好的争论,对于这些一直不断的争论,我觉得实在没有必要,黑格尔的存在即合理,中国的老古语说的萝卜白菜各有所爱,大家争论的再多其实卵用也没用,还不如趁着闲暇时 ...

  3. 如何去掉底部的织梦版权信息powered by dedecms

    由于织梦DEDECMS程序6月份的漏洞,很多织梦网站都被黑了,所以大家都在抓紧时间更新系统补丁.但是这次的DEDECMS V5.7版本更新后,在前台网页底部会出现织梦版权信息 “powered by ...

  4. [poi2010]Hamsters

    题意:Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算.现在Tz想好了要出现多少个名字,请你求出最短的 ...

  5. 写在分类之首-----to do list!

    1.增强学习 http://www.wildml.com/2016/10/learning-reinforcement-learning/ 2.RNN 别人的博客目录: 1.学些增强学习(通过代码,练 ...

  6. Java开发视频网站大概需要多少钱?

    这个还真不好说,需要看你对视频网站有什么要求?你的数据库选择的是什么型号的?需要开发几个页面?服务器是需要高端的还是中低端的?还有你对完成时间有什么要求,这些细节也是决定价格的关键因素. 上面这些因素 ...

  7. 七牛php sdk 生成上传凭证时出现 undefined function Qiniu_SetKeys()

    将qiniu/http.php文件改名即可,原因是xampp等集成环境会安装pear存在了http.php

  8. 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  9. hadoop使用问题

    前提 环境 ubuntu 安装hadoop 已经有一段时间 1.启动的时候提示 Connection reset by peer 这个查看日志,里面有说 ssh里面某个文件的权限太大 这个ssh里修改 ...

  10. STC12C5A60S2笔记3(I/O 端口)

    1. 基本特性 STC 单片机IO口可由软件配置成四种工作模式: 1)准双向口:标准51单片机模式,可用作输入和输出 2) 推挽输入输出:需要更大的驱动电流,当高电平时,拉电流20mA.当低电平时,灌 ...