hrbust 1491 游河 最大流 dinic模板
来源:互联网 发布:虚拟机系统安装linux 编辑:程序博客网 时间:2024/06/18 12:21
HRBUST 1491 游河 点击打开链接
最大流讲解:点击打开链接
第一次看网络流,看了一上午,总算看出点毛头。。。。
接下来就是刷题巩固找毛病了。。。
这道题完全是一道模板题,不过第一次写,写模板写了半天 - -!
我们把每条道都看成容量为1的管道,这样求得的最大流就是答案。
代码:
#include<stdio.h>#include<iostream>#include<map>#include<string.h>#include<queue>#include<algorithm>using namespace std;#define inf 0x3f3f3f3fint dis[500];int flow[500][500];int n,m,d;int bfs(){ memset(dis,-1,sizeof(dis)); dis[1]=0; queue<int>Q; Q.push(1); while(!Q.empty()) { int top=Q.front(); Q.pop(); for(int i=1; i<=n; i++) { if(flow[top][i]>0&&dis[i]<0) { dis[i]=dis[top]+1; Q.push(i); } } } if(dis[n]>0) return 1; return 0;}int dinic(int x,int y){ int fl; if(x==n) return y; for(int i=1; i<=n; i++) { if(flow[x][i]>0&&dis[i]==dis[x]+1&&(fl=dinic(i,min(y,flow[x][i])))) { flow[x][i]-=fl; flow[i][x]+=fl; return fl; } } return 0;}int main(){ while(~scanf("%d%d%d",&n,&m,&d)) { memset(flow,0,sizeof(flow)); int a,b; for(int i=0; i<m; i++) { scanf("%d%d",&a,&b); flow[a][b]=1; flow[b][a]=1; } int ans=0; while(bfs()) { int res; while(res=dinic(1,inf))ans+=res; } if(ans>=d) printf("Orz!\n"); else { printf("Jiao Zhu v5!\n"); } }}
阅读全文
0 0
- hrbust 1491 游河 最大流 dinic模板
- Hrbust 1491 游河【最大流模板题】
- 最大流dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流dinic 模板
- 最大流dinic模板
- 最大流dinic模板
- 最大流:Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- dinic最大流模板
- 最大流dinic模板
- dinic 最大流模板
- ACM 最大流 dinic 模板
- 最大流模板(Dinic, ISAP)
- hdu4888 最大流,dinic模板
- PAT甲级 1045 -- LCS直接过,不会考
- ES6之字符串的遍历器接口
- 优化VMware提高虚拟机运行速度的技巧
- 数组
- Linux 查看开机启动时间
- hrbust 1491 游河 最大流 dinic模板
- bzoj3470 Freda's Walk (期望概率DP)
- 3444: 最后的晚餐(乱搞)
- 浏览器嵌入组件miniblink使用笔记
- Spring拦截器和异常处理的执行流程
- AC自动机
- CEOI2012 Network
- win下改变用户名的中文名步骤
- 915