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(网络流)的更多相关文章

  1. poj1273 Drainage Ditches Dinic最大流

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 76000   Accepted: 2953 ...

  2. 【网络流】POJ1273 Drainage Ditches

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 78671   Accepted: 3068 ...

  3. POJ1273 Drainage Ditches (网络流)

                                                             Drainage Ditches Time Limit: 1000MS   Memor ...

  4. poj1273 Drainage Ditches

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 68414   Accepted: 2648 ...

  5. POJ 1273 Drainage Ditches (网络流Dinic模板)

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

  6. POJ 1273:Drainage Ditches 网络流模板题

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 63339   Accepted: 2443 ...

  7. HDU1532 Drainage Ditches 网络流EK算法

    Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...

  8. POJ-1273 Drainage Ditches 最大流Dinic

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65146 Accepted: 25112 De ...

  9. USACO 4.2 Drainage Ditches(网络流模板题)

    Drainage DitchesHal Burch Every time it rains on Farmer John's fields, a pond forms over Bessie's fa ...

  10. NYOJ 323 Drainage Ditches 网络流 FF 练手

    Drainage Ditches 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Every time it rains on Farmer John's fields, ...

随机推荐

  1. android 开发-HttpClient状态码定义

    TP 定义的状态代码的值(.net HttpWebResponse.HttpStatusCode 成员名称 说明 Continue 等效于 HTTP 状态 100.Continue 指示客户端可能继续 ...

  2. android 开发AlertDialog.builder对话框的实现

    AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...

  3. Java修饰符/关键字

    修饰符分类: 权限修饰符:public.protected.default.private 其他修饰符:abstract.static.final.transient.volatile.native. ...

  4. ios MBProgressHUD 使用,及二次封装

    MBProgressHUD是一个显示HUD窗口的第三方类库,用于在执行一些后台任务时,在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口.MBProgressHUD 二次封装 ...

  5. android打开文件、保存对话框、创建新文件夹对话框(转载)

    转载地址:点击打开 这是一个简单的只有3个按钮的程序,3个按钮分别对应三种工作的模式(保存.打开和文件夹选择).封装的SimpleFileDialog.java的内容如下: package com.e ...

  6. Java算法面试题 一个顺子带一对

    打牌里面经常出现的5张牌,一个顺子带一对,给你五张牌,比如:1,2,2,2,3 或者 5,6,7,4,4 或者 2,4,3,5,5 或者 7,5,9,6,9 ,这种情况就符合一个顺子带一对,则返回 t ...

  7. C# 发Domino邮件 报错误 Password or other security violation for database 的解决方案

    错误提示: Password or other security violation for database ******* 问题产生的描述: 之前C#发邮件是好的 加上了附件部分代码之后,出现了这 ...

  8. cocos2d-x 配置教程

    下载cocos2d-x并解压(解压的路径不要带空格,不然以后用cygwin编译工程的时候会出现错误),我的解压到了D:\cocos2d-2.1rc0-x-2.1.2(我的版本是cocos2d-2.1r ...

  9. NEO

    平台: Windows 类型: 虚拟机镜像 软件包: .net core neo application server basic software blockchain neo open sourc ...

  10. SqlServer Alwayson 搭建排错记录(一)

    这几天搭建alwayson,碰到一堆问题,解决起来花了不少时间,特此记下几个有代表性的,以免以后再碰到做重复功. 一.创建可用性组 使用SSMS的创建可用性组向导,添加了一个主副本node1,一个辅助 ...