[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, ...
随机推荐
- elasticsearch远程代码执行漏洞告警
es版本:1.7.2 最近在做es项目的时候出现,启动es一段时间系统就会报警,结果查询了一下,原来是es的漏洞: 官网描述: 大致意思就是: 漏洞出现在脚本查询模块,默认搜索引擎支持使用脚本代码(M ...
- 人工智能之必须会的Python基础
Python 号称是最接近人工智能的语言,因为它的动态便捷性和灵活的三方扩展,成就了它在人工智能领域的丰碑 走进Python,靠近人工智能 一.编程语言Python的基础 之 "浅入浅出&q ...
- 使用FusionCharts创建可更新数据的JavaScript图表
先创建一个简单的图表,然后改变它的数据(请参见下面的代码).图表最初据显示8月份的销售数据,当用户点击按钮时改为显示9月份的销售数据.每个月都有单独的XML文件,代码如下: <html> ...
- [转] eclipce使用vim 开启装逼模式
原文:http://blog.csdn.net/fatal360/article/details/12321613 1.在eclipse中使用vi模式的插件Vrapper打开eclipse,在Help ...
- Android studio 配置忽略
直接在Ignored Files选项里点击+号,在弹出的对话框选择第二项,然后依次输入上面包含的 .gradle .idea build 三个文件夹目录,再选择第一项,找到local.properti ...
- Python 加持,给你更有趣的 Azure 虚拟机开关重启方法!
在程序员的世界里,有关编程语言孰优孰劣的争论从来就没有消停过,不管你更粉哪种语言,毫无疑问,每种语言都有自己擅长的领域,而一些语言因为上手简单.扩展性强.功能强大等因素,往往会比较多地出现在我们面前, ...
- PHP snippets
Friendly file size string public static function bytesToSize($bytes) { if ($bytes < 1024) { retur ...
- ThinkPHP添加扩展配置失败
扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样.设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'us ...
- COGS 1944. 背驮式行走
★ 输入文件:piggyback.in 输出文件:piggyback.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] Bessie和她妹妹Elsie白天都在牧场 ...
- cesium 加载TMS影像(已经切片)
TMS影像数据格式 加载影像的代码: var layers = viewer.scene.imageryLayers; var blackMarble = layers.addImageryProvi ...