[POJ1273][USACO4.2]Drainage Ditches (网络流最大流)
题意
网络流最大流模板
思路
EK也不会超时
所以说是一个数据比较水的模板题
但是POJ有点坑,多组数据,而且题目没给
哭得我AC率直掉
代码
用的朴素Dinic
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
#define N 200010
#define INF 0x3fffffff
inline int read() {
int x = ,f = ;
char ch = getchar();
while(ch<''||ch>'') { if(ch=='-') f = -; ch = getchar(); }
while(ch>=''&&ch<='') {x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x * f;
}
struct point{
int fr,to,val;
int nxt;
}edge[N];
int head[N];
int cnt;
void add_edge(int x,int y,int z)
{
edge[cnt].fr=x,edge[cnt].to=y,edge[cnt].val=z;
edge[cnt].nxt=head[x],head[x]=cnt++;
edge[cnt].fr=y,edge[cnt].to=x,edge[cnt].val=;
edge[cnt].nxt=head[y],head[y]=cnt++;
}
//我放弃链式前向星
int n,m,st,ed;
int deep[N];
int BFS()
{
queue<int>q;
memset(deep,,sizeof(deep));
q.push(st);
deep[st]=;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i!=-;i=edge[i].nxt)
{
int tmp=edge[i].to;
if(edge[i].val<= || deep[tmp]) continue;
deep[tmp]=deep[u]+;
q.push(tmp);
}
}
return deep[ed];
}
int ans;
int dfs(int u,int flow)//flow为到达终点最多能增广的值
{
if(u==ed) return flow;
int add=;
for(int i=head[u];i!=-&&add<flow;i=edge[i].nxt)
{
int v=edge[i].to;
if(deep[v]!=deep[u]+) continue;
if(!edge[i].val) continue;//剪枝
int tmpadd=dfs(v,min(edge[i].val,flow-add));
edge[i].val-=tmpadd;
edge[i^].val+=tmpadd;//sub
add+=tmpadd;
}
return add;
}
void Dinic()
{
while(BFS()) ans+=dfs(st,INF);
}
int main()
{
while(scanf("%d%d",&n,&m)==)
{
ans=;
st=,ed=m;
memset(edge,,sizeof(edge));
memset(head,-,sizeof(head));
for(int i=,u,v,co;i<=n;i++)
{
u=read(),v=read(),co=read();
add_edge(u,v,co);
}
Dinic();
printf("%d\n",ans);
}
return ;
}
[POJ1273][USACO4.2]Drainage Ditches (网络流最大流)的更多相关文章
- poj 1273 Drainage Ditches 网络流最大流基础
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 59176 Accepted: 2272 ...
- poj 1273 Drainage Ditches (网络流 最大流)
网络流模板题. ============================================================================================ ...
- poj1273 Drainage Ditches Dinic最大流
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 76000 Accepted: 2953 ...
- 2018.07.06 POJ1273 Drainage Ditches(最大流)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Description Every time it rains on Farmer J ...
- POJ1273&&Hdu1532 Drainage Ditches(最大流dinic) 2017-02-11 16:28 54人阅读 评论(0) 收藏
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1532||POJ1273:Drainage Ditches(最大流)
pid=1532">Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/327 ...
- 【USACO4.2】草地排水Drainage Ditches(最大流)
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- HDU1532 Drainage Ditches 网络流EK算法
Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...
- poj 1273 (nyoj 323) Drainage Ditches : 最大流
点击打开链接 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49648 Accepte ...
随机推荐
- 虚拟机14安装kail Linux
需要准备虚拟机和kail Linux镜像 1. 2.选择镜像安装,并且添加你的kail Linux镜像文件. 3. 4.在这里需要修改虚拟机名称,也可以不修改就用默认,然后在修改kail Linux的 ...
- MySql 从SQL文件导入
1. 运行cmd进入命令模式,进入Mysql安装目录下的bin目录(即mysql.exe所在的目录): cd c:\"program Files"\MySQL\"MySQ ...
- WPF UserControl响应窗体的PreviewKeyDown事件
目的 在UserControl页面实现通过快捷键打开新建窗口 实现过程 监听Window窗体的PreviewKeyDown 其实,使用KeyDown事件也是可以的 页面代码 <Window x: ...
- zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控
zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控 前端nginx虚拟主机引用后端多个php接口,为了方便监控,将后端服务器集中配置在nginx中,具体配置如下: [roo ...
- 推荐前端开发手机调试打印神器console.log()
下面说的这个插件很牛,相信很多人都不知道,但找问题的时候很需要,直接上干货如下: vConsole:一个轻量.可拓展.针对手机网页的前端开发者调试面板. 下载 vConsole 的最新版本.(不要直接 ...
- sqlite3 学习
安装sqlite: [ sqlite]$ wget http://www.sqlite.org/sqlite-3.6.16.tar.gz[ sqlite]$ tar -xzvf sqlite-3.6. ...
- Xamarin Layout属性(转)
第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android: ...
- java类型转化
Java中的父类/子类相互转化问题: 子类可以转成父类:此时子类能调用父类中定义的方法和变量,如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法 父类转成子类:1.如 ...
- 学习笔记_J2EE_Spring(一)_入门
3. Spring概述 3.1. Spring是什么 Spring是一个优秀的高可用的JavaEE轻量级开发框架.提供一站式开发解决方案. 3.2. Spring框架出现的背景 在世 ...
- Java常见的10个异常
1.NullPointerException: 空指针异常,当操作一个 null 对象的方法或属性时会抛出这个异常.是一个很头疼的异常,因为它是运行时异常,不需要手动捕获,但运行时碰到这个异常会中断程 ...