网络流 最大流HDU 3549
/
/
/
/
/
/
/
/
/
/ 在这幅图中我们首先要增广1->2->4->6,这时可以获得一个容量为2的流,但是如果不建立4->2反向弧的话,则无法进一步增广,
最终答案为2,显然是不对的,然而如果建立了反向弧4->2,则第二次能进行1->3->4->2->5->6的增广,最大流为3.
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
typedef long long LL; using namespace std;
int n,m;
#define inf 100000000
#define MAXN 5000
#define MAXN1 50
struct edg
{
int w,to,next;
}x[MAXN+];
int head[MAXN1],cnt;
int vis[MAXN1]; void add(int u,int v,int w)
{
x[cnt].next=head[u];
x[cnt].to=v;
x[cnt].w=w;
head[u]=cnt++;
x[cnt].next=head[v];
x[cnt].to=u;
x[cnt].w=;
head[v]=cnt++;
}
queue<int>q1; int bfs() //层次网络
{
memset(vis,-,sizeof(vis));
vis[]=;
q1.push();
while(!q1.empty())
{
int now=q1.front();
q1.pop();
int j;
for(j=head[now];j!=-;j=x[j].next)
{
if(vis[x[j].to]<&&x[j].w)
{
vis[x[j].to]=vis[now]+;
q1.push(x[j].to);
}
}
}
if(vis[n]<) //汇点不在网络 结束
return ;
return ;
}
int dfs(int u,int w)
{
if(u==n)
return w;
int j;
int ans=; for(j=head[u];j!=-&&ans<=w;j=x[j].next)
{
if(vis[x[j].to]==vis[u]+&&x[j].w)
{
int b=dfs(x[j].to,min(w-ans,x[j].w)); //流进去的有2个限制 min(总流量减去已经流掉的,可以流进去的)
x[j].w-=b;
x[j^].w+=b; //cnt=0 开始 反向边下标=j^1 可以自己试试
ans+=b;
}
}
return ans;
}
int main()
{
int t,ca; scanf("%d",&t);
ca=;
while(t--)
{
scanf("%d%d",&n,&m);
cnt=;
memset(head,-,sizeof(head));
int i,j;
for(i=;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w); //建边 有反向边
}
int ans=;
while(bfs()) //Dinic bfs+dfs
ans+=dfs(,inf);
printf("Case %d: %d\n",ca++,ans);
} return ;
}
/*By--MJY*/
网络流 最大流HDU 3549的更多相关文章
- 网络流--最大流--HDU 3549 Flow Problem
题目链接 Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, y ...
- 【网络流#1】hdu 3549 - 最大流模板题
因为坑了无数次队友 要开始学习网络流了,先从基础的开始,嗯~ 这道题是最大流的模板题,用来测试模板好啦~ Edmonds_Karp模板 with 前向星 时间复杂度o(V*E^2) #include& ...
- 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)
HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的 ...
- 图论--网络流--最大流 HDU 2883 kebab(离散化)
Problem Description Almost everyone likes kebabs nowadays (Here a kebab means pieces of meat grilled ...
- 图论--网络流--最大流 HDU 3572 Task Schedule(限流建图,超级源汇)
Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...
- HDU 3549 Flow Problem(最大流)
HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)
HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...
- 网络流 HDU 3549 Flow Problem
网络流 HDU 3549 Flow Problem 题目:pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549 用增广路算法 ...
- Flow Problem HDU - 3549
Flow Problem HDU - 3549 Network flow is a well-known difficult problem for ACMers. Given a graph, yo ...
随机推荐
- instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例. instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. result ...
- Mecanim分析
前言 目前我还只是学习到Mecanima的初级阶段,看完了阿赵的日志<Unity3D 4.0新功能:Mecanim动画系统基础教程>,对Mecanima的了解更深入了一些,谢谢他的分享. ...
- Collider Collision 区别
Collision 中带有碰撞的信息,例如:速度和撞击到的点 示例 void OnCollisionEnter2D(Collision2D coll) { foreach(ContactPoint c ...
- poj3281 Dining
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14316 Accepted: 6491 Descripti ...
- jquery两个滚动条样式
jquery两个滚动条样式 点击下载
- php 中的curl
① curl上传文件 <?php $postData=array( 'name'=>'123', 'upload'=>'@E:/wamp/www/function/result.zi ...
- 十个节省时间的MySQL命令
十个节省时间的MySQL命令 2011-02-23 16:07 黄永兵 译 IT168 字号:T | T 编者在工作中积累起来了一些MySQL命令行客户端技巧,这些技巧或多或少会帮助您节省大量的时间. ...
- BZOJ 1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14396 Solved: 5521[Submit][Sta ...
- Cordova - 使用Cordova开发iOS应用实战4(调用摄像头拍照,并编辑)
使用Cordova可以很方便的通过js代码来使用设备摄像头拍照,只需把camera插件添加进来即可. 一,添加camera插件 首先我们要在“终端”中进入工程所在的目录,然后运行如下命令: 1 cor ...
- ASP.NET性能优化之减少请求
在上篇<ASP.NET性能优化之让浏览器缓存动态网页> 中的方案中,浏览器发送If-Modified-Since将是否需要使用自己的缓存交给WEB服务器去决定,服务器告知浏览器去读缓存,浏 ...