USACO4.2.1 网络流最大流算法
/*
ID:hk945801
TASK:ditch
LANG:C++
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=10000001;
struct node{
int c,f;
}a[201][201];
int p[201*201],d[201*201],pre[201];
int main(){
int i,j,k,m,n;
int x;
freopen("ditch.in","r",stdin);
freopen("ditch.out","w",stdout);
cin>>m>>n;
for(i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
a[x][y].c+=z;
}
int pd=1;
while(pd){
pd=0;
int fi=0,l=1;
d[1]=1;
for(i=1;i<=n;i++)p[i]=0;
p[1]=1;
while(fi<l){
fi++;
x=d[fi];
for(i=2;i<=n;i++)
if(!p[i] && (a[x][i].c>a[x][i].f || a[i][x].f>0)){
d[++l]=i;
p[i]=1;
pre[i]=x;
if(i==n){pd=1;break;}
}
if(pd==1)break;
}
if(pd==0)break;
int min=inf;
x=n;
while(x!=1){
if(a[pre[x]][x].c>a[pre[x]][x].f&& a[pre[x]][x].c-a[pre[x]][x].f<min)
min=a[pre[x]][x].c-a[pre[x]][x].f;
else if(a[x][pre[x]].f>0 && a[x][pre[x]].f<min)
min=a[x][pre[x]].f;
x=pre[x];
}
x=n;
while(x!=1){
if(a[pre[x]][x].c>a[pre[x]][x].f)
a[pre[x]][x].f+=min;
else if(a[x][pre[x]].f>0)
a[x][pre[x]].f-=min;
x=pre[x];
}
}
int ans=0;
for(i=2;i<=n;i++)
ans+=a[1][i].f;
cout<<ans<<endl;
return 0;
}
USACO4.2.1 网络流最大流算法的更多相关文章
- [讲解]网络流最大流dinic算法
网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...
- HDU1532 网络流最大流【EK算法】(模板题)
<题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...
- 网络流之最大流算法(EK算法和Dinc算法)
最大流 网络流的定义: 在一个网络(有流量)中有两个特殊的点,一个是网络的源点(s),流量只出不进,一个是网络的汇点(t),流量只进不出. 最大流:就是求s-->t的最大流量 假设 u,v 两个 ...
- (通俗易懂小白入门)网络流最大流——EK算法
网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...
- 网络流最大流——dinic算法
前言 网络流问题是一个很深奥的问题,对应也有许多很优秀的算法.但是本文只会讲述dinic算法 最近写了好多网络流的题目,想想看还是写一篇来总结一下网络流和dinic算法以免以后自己忘了... 网络流问 ...
- [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)
题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...
- [知识点]网络流之Dinic算法
// 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html ...
- hihocoder网络流一·Ford-Fulkerson算法
网络流一·Ford-Fulkerson算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个大城市都会遇 ...
- 最大流算法-ISAP
引入 最大流算法分为两类,一种是增广路算法,一种是预留推进算法.增广路算法包括时间复杂度\(O(nm^2)\)的EK算法,上界为\(O(n^2m)\)的Dinic算法,以及一些其他的算法.EK算法直接 ...
随机推荐
- android中获取某段程序的执行时间
Date startDate = new Date(System.currentTimeMillis()); 在收到设备返回数据之后添加如下语句: Date endDate = ...
- android TextView异常换行层次不齐的问题
关于TextView异常换行,参差不齐问题分析:每行的开头的第一个字符如果是字母,数字,标点符号以及特殊字符 可能是由于都是半角字符,所以需要转化成全角字符 解决方法是: public String ...
- ado.net 调用带参数的存储过程
String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123&quo ...
- nginx根据token做频率限制
在 nginx.conf 文件添加配置 limit_conn_log_level error; limit_conn_status ; limit_conn_zone $cookie_gray_DF_ ...
- TCP的发送缓冲区和接收缓冲区
TCP协议是作用是用来进行端对端数据传送的,那么就会有发送端和接收端,在操作系统有两个空间即user space和kernal space. 每个Tcp socket连接在内核中都有一个发送缓冲区和接 ...
- python--标准库 时间与日期 (time, datetime包)
Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔.时间起点的选择与计算机相关,但一台计算机的 ...
- HDU 5186 zhx's submissions (进制转换)
Problem Description As one of the most powerful brushes, zhx submits a lot of code on many oj and mo ...
- 会话过程保存数据对象cookie和session
1 cookie是以键值对保存在浏览器端,服务器端可以创建.接收.发送 cookie 信息. request可以接收 cookie, response 可以发送 cookie. 1)cookie 可以 ...
- ubuntu学习教程
1:搜狗输入法安装: http://jingyan.baidu.com/article/adc815134f4b92f722bf7350.html 2:flash插件的安装: http://jingy ...
- [Jobdu] 题目1493:公约数
题目描述: 给定两个正整数a,b(1<=a,b<=100000000),计算他们公约数的个数.如给定正整数8和16,他们的公约数有:1.2.4.8,所以输出为4. 输入: 输入包含多组测试 ...