[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 ...
随机推荐
- springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志
1.操作日志实体类 @Document(collection = "operation_log") @Getter @Setter @ToString public class O ...
- django --视图装饰器
- mvc RedirectToAction、mobile 重定向地址栏未改变
@using (Html.BeginForm("actionName", "controllerName", FormMethod.Post, new { da ...
- 项目Alpha冲刺(团队)-第五天冲刺
格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队)-代码规范.冲刺任务与计划 团队名称:为了交项目干杯 作业目标:描述第五天冲刺的项目进展.问题困难.心得体会 ...
- 虚拟机上的centos7链接不上网络: activation of network connection failed
报错: 重启网络也不行: 解决: 1.打开网络配置文件: $vi /etc/sysconfig/network-scripts/ifcfg-ens33 (可以参照这里的描述,找到这个文件https: ...
- 圈水池 nyoj 78 凸包算法
圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水, ...
- USB鼠标键盘数据格式以及按键键值
鼠标发送给PC的数据每次4个字节 BYTE1 BYTE2 BYTE3 BYTE4 定义分别是: BYTE1 -- |--bit7: 1 表示 Y 坐标的变化量超出-256 ...
- STM32F0使用LL库实现Modbus通讯
在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本篇将说明基于LL实现USART通讯. 1 ...
- git branch 分支
几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副 ...
- 自定义admin组件
配置路由 1 新建一个项目, 创建一个app01和stark应用,stark创建一个service包,并在service下创建stark.py.然后注册app 2 仿照site.py的注册代码,写st ...