[Poj1273]Drainage Ditches(网络流)
Description
给图,求最大流
最大流模板题,这里用dinic
Code
#include <cstdio>
#include <cstring>
#include <algorithm>
#define Inf 0x7fffffff
#define N 210
using namespace std;
int g[N][N],d[N],q[N*10],h,t;
int n,m,Ans,tmp;
bool Bfs(){
memset(d,-1,sizeof(d));
d[1]=0;
h=0,t=1;
q[1]=1;
while(h<t){
int u=q[++h];
for(int v=1;v<=n;++v)
if(d[v]<0&&g[u][v]>0){
d[v]=d[u]+1;
q[++t]=v;
}
}
return d[n]>0;
}
int dfs(int u,int low){
if(u==n) return low;
int tmp;
for(int v=1;v<=n;++v){
if(g[u][v]>0&&d[v]==d[u]+1&&(tmp=dfs(v,min(low,g[u][v])))){
g[u][v]-=tmp;
g[v][u]+=tmp;
return tmp;
}
}
return 0;
}
int main(){
while(~scanf("%d%d",&m,&n)){
memset(g,0,sizeof(g));
for(int i=1,u,v,f;i<=m;++i){
scanf("%d%d%d",&u,&v,&f);
g[u][v]+=f;
}
Ans=0;
while(Bfs()) {
while(tmp=dfs(1,Inf)) Ans+=tmp;
}
printf("%d\n",Ans);
}
return 0;
}
下面是sap算法,
#include <cstdio>
#include <algorithm>
#include <cstring>
#define Inf 0x7fffffff
#define N 110
using namespace std;
struct info{
int nex,fr,to,f;
}e[N*N];
int n,m,Ans,dis[N],head[N],cnt[N],S,T,tot;
void Link(int u,int v){
e[++tot].nex=head[u];
e[tot].f=1;e[tot].fr=u;e[tot].to=v;head[u]=tot;
e[++tot].nex=head[v];
e[tot].f=0;e[tot].fr=v;e[tot].to=u;head[v]=tot;
}
int sap(int u,int delta){
int sum=0,mins=n;
if(u==T) return delta;
for(int i=head[u];i;i=e[i].nex){
int v=e[i].to;
if(e[i].f>0&&dis[u]==dis[v]+1){
int save=sap(v,min(delta-sum,e[i].f));
sum+=save;
e[i].f-=save;
e[i^1].f+=save;
if(dis[S]>=n||sum==delta) return sum;
}
if(e[i].f>0) mins=min(mins,dis[v]);
}
if(sum==0){
if(!(--cnt[dis[u]])) dis[S]=n;
else ++cnt[dis[u]=mins+1];
}
return sum;
}
int main(){
scanf("%d%d",&m,&n);
S=0,T=n+1;tot=-1;//异或取反向边,所以从0开始编号
int u,v,tmp;
while(~scanf("%d%d",&u,&v)){
if(u+v==-2) break;
Link(u,v);
}
for (int i=1;i<=m;++i) Link(S,i);
for (int i=m+1;i<=n;++i) Link(i,T);
n+=2;cnt[0]=n;
while(dis[S]<n) Ans+=sap(S,Inf);
printf("%d\n",Ans);
return 0;
}
[Poj1273]Drainage Ditches(网络流)的更多相关文章
- poj1273 Drainage Ditches Dinic最大流
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 76000 Accepted: 2953 ...
- 【网络流】POJ1273 Drainage Ditches
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 78671 Accepted: 3068 ...
- POJ1273 Drainage Ditches (网络流)
Drainage Ditches Time Limit: 1000MS Memor ...
- poj1273 Drainage Ditches
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 68414 Accepted: 2648 ...
- POJ 1273 Drainage Ditches (网络流Dinic模板)
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- POJ 1273:Drainage Ditches 网络流模板题
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63339 Accepted: 2443 ...
- HDU1532 Drainage Ditches 网络流EK算法
Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...
- POJ-1273 Drainage Ditches 最大流Dinic
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65146 Accepted: 25112 De ...
- USACO 4.2 Drainage Ditches(网络流模板题)
Drainage DitchesHal Burch Every time it rains on Farmer John's fields, a pond forms over Bessie's fa ...
- NYOJ 323 Drainage Ditches 网络流 FF 练手
Drainage Ditches 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Every time it rains on Farmer John's fields, ...
随机推荐
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第十二天(非原创)
文章大纲 一.课程介绍二.Ngnix基础知识学习三.Ngnix在淘淘商城中使用四.参考资料下载五.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Sv ...
- #include stdio.h(1)
#include <stdio.h> int main() { //************一.运算符********** //1.赋值运算符 = ; //赋值运算符表示的是将等号右边的赋 ...
- html的语法 3
<html> <head> <title>这是第一节课网页标题</title> <!--meta charset="UTF-8" ...
- js或者jq判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色
如何判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色(在html中)比如有body中有这么一串文字“驾驶的后视镜的华盛顿”,想要判断里面是否有“驾驶”这两个字,如果有就把这两个字变成 ...
- SpringBoot JUnit4的断言和注解
Junit4的断言常用方法: assertArrayEquals( new Object[]{ studentService.likeName("小明2").size() > ...
- 使用Qt生成第一个窗口程序
一.打开QtCreater,点击New Project 二.在Qt中,最常用的窗口程序为widgets控件程序,这里我们选择Qt Widgets Application 三.Qt生成的debug和re ...
- Samuraiwtf-解决sshd安装启动
东西没仔细看就给别人了,具体是系统默认的sshd怎么都起不来.于是重新安装一下,过程如下 root@samuraiwtf:~# netstat -nlt Active Internet connect ...
- 工作中碰到的css问题解决方法
好久都没来这写东西了,都长草了.刚解决的两个小问题,先记下来 textarea横向没有滚动条加上 wrap="off"这个属性 英文单词不断行加上这个 word-break:bre ...
- linux 命令——13 less(转)
less 工 具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性. 在 more 的时候,我们并没有办法向前 ...
- 《Ruby on Rails教程》学习笔记
本文是我在阅读 Ruby on Rails 教程的简体中文版时所做的摘录,以及学习时寻找的补充知识.补充知识主要来自于 Ruby on Rails 實戰聖經. Asset Pipeline 在最新版 ...