poj 1273
网络流之最大流的基础题;
可以使用dinic算法和EK算法:
分别对着模板敲了一遍:
dinic:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define maxn 205
#define inf 0xfffffff
using namespace std; int map[maxn][maxn],level[maxn];
int n,m; int bfs(int s)
{
memset(level,,sizeof level);
queue<int>q;
q.push(s);
level[s]=;
while(!q.empty())
{
int now=q.front();
q.pop();
for(int i=; i<=m; i++)
if(!level[i]&&map[now][i]>)
{
level[i]=level[now]+;
q.push(i);
}
}
return level[m]!=;
} int dfs(int s,int cp)
{
int tmp=cp,t;
if(s==m) return cp;
for(int i=; i<=m&&tmp; i++)
if(level[i]==level[s]+&&map[s][i]>)
{
t=dfs(i,min(tmp,map[s][i]));
map[s][i]-=t;
map[i][s]+=t;
tmp-=t;
}
return cp-tmp;
} int main()
{
int a,b,f;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,,sizeof map);
for(int i=; i<n; i++)
{
scanf("%d%d%d",&a,&b,&f);
map[a][b]+=f;
}
int ans=,flow=;
while(bfs())
{
while(flow=dfs(,inf))
ans+=flow;
}
printf("%d\n",ans);
}
return ;
}
EK:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 205
#include<queue>
using namespace std; int map[maxn][maxn],p[maxn],n,m;
bool flag[maxn];
bool bfs()
{
queue<int>q;
memset(flag,,sizeof flag);
memset(p,-,sizeof p);
q.push();
flag[]=;
while(!q.empty())
{
int now=q.front();
q.pop();
if(now==m) return ;
for(int i=; i<=m; i++)
if(map[now][i]>&&!flag[i])
{
flag[i]=;
p[i]=now;
q.push(i);
}
}
return ;
} void ek()
{
int u,flow=,t;
while(bfs())
{
t=;
u=m;
while(p[u]!=-)
{
t=min(t,map[p[u]][u]);
u=p[u];
}
flow+=t;
u=m;
while(p[u]!=-)
{
map[p[u]][u]-=t;
map[u][p[u]]+=t;
u=p[u];
}
}
printf("%d\n",flow);
} int main()
{
int a,b,f;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,,sizeof map);
while(n--)
{
scanf("%d%d%d",&a,&b,&f);
map[a][b]+=f;
}
ek();
}
return ;
}
poj 1273的更多相关文章
- UVA 820 --- POJ 1273 最大流
找了好久这两个的区别...UVA820 WA了 好多次.不过以后就做模板了,可以求任意两点之间的最大流. UVA 是无向图,因此可能有重边,POJ 1273是有向图,而且是单源点求最大流,因此改模板的 ...
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
- POJ 1273 网络流(最大流)模板
http://poj.org/problem?id=1273 这道题很值得反思,弄了一下午,交上去先是一直编译错误,而在本地运行没有问题, 原因可能是oj的编译器版本老旧不支持这样的写法 G[from ...
- poj 1273 最大流
题目链接:http://poj.org/problem?id=1273 a.EK算法:(Edmond-Karp): 用BFS不断找增广路径,当找不到增广路径时当前流量即为最大流. b.dinic算法: ...
- poj 1273 Drainage Ditches 最大流入门题
题目链接:http://poj.org/problem?id=1273 Every time it rains on Farmer John's fields, a pond forms over B ...
- poj 1273 Drainage Ditches(最大流)
http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- (网络流 模板 Dinic) Drainage Ditches --POJ --1273
链接: http://poj.org/problem?id=1273 代码: //Dinic #include<stdio.h> #include<string.h> #inc ...
- (网络流 模板 Edmonds-Karp)Drainage Ditches --POJ --1273
链接: http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total ...
- POJ 1273 Drainage Ditches (网络最大流)
http://poj.org/problem? id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Sub ...
随机推荐
- Java开发之I/O读取文件实例详解
在java开发或者android开发中,读取文件是不可避免的,以下对java开发中读取文件做了归纳和详解: 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 pa ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)
在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些 ...
- git对象存储
之前提到当存储数据内容时,会在objects文件夹下存储一个git对象.我们花些时间来看看 Git 是如何存储对象的.你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象 ...
- C# 调用Java Webservice 加入SoapHeader 验证信息
C#调用java 编写的webservice时不会自动生成 soapheader 类接口的,需要改动Reference.cs. 在生成的代理类referende.cs中进行如下操作: 一.在声明pub ...
- 20151221jquery学习笔记--验证插件
验证插件(validate.js),是一款验证常规表单数据合法性的插件.使用它,极大的解放了在表单上繁杂的验证过程,并且错误提示显示的完善也增加了用户体验.一. 使用 validate.js 插件官网 ...
- 广告系统中weak-and算法原理及编码验证
wand(weak and)算法基本思路 一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应 该,主要 ...
- Android获取屏幕尺寸大小
官方API: A structure describing general information about a display, such as its size, density, and fo ...
- asp.net中Get请求和Post请求
Get和Post请求的区别:Get请求因为传输的数据在URL中,因此不安全,而且多数浏览器有限制其长度,最长为2KB.通过Get请求获取数据的方式:string strName=context.Req ...
- 用正则表达式解析XML
import java.util.regex.*; import java.util.*; /** * * <p>Title: Document</p> * * <p&g ...
- C++ 变量转换
atoi,atol,strtod,strtol,strtoul实现类型转换2006-02-13 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://ivanvic.blogb ...