最大流dinic模板
来源:互联网 发布:程序员谈恋爱被动吗 编辑:程序博客网 时间:2024/04/28 18:53
- 运输问题1
★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比
时间限制:1 s 内存限制:128 MB
【问题描述】
一个工厂每天生产若干商品,需运输到销售部门进行销售。从产地到销地要经过某些城镇,有不同的路线可以行走,每条两城镇间的公路都有一定的流量限制。请你计算,在不考虑其它车辆使用公路的前提下,如何充分利用所有的公路,使产地运输到销地的商品最多,最多能运输多少商品。
【输入格式】
输入文件有若干行
第一行,一个整数n,表示共有n个城市(2<=n<=100),产地是1号城市,销地是n号城市。
下面有n行,每行有n个数字。第p行第q列的数字表示城镇p与城镇q之间有无公路连接。数字为0表示无,大于0表示有公路,且该数字表示该公路流量。
【输出格式】
输出文件有一行
第一行,1个整数max,表示最大流量为max。
【输入输出样例】
输入文件名: maxflowa.in
6
0 4 8 0 0 0
0 0 4 4 1 0
0 0 0 2 2 0
0 0 0 0 0 7
0 0 0 6 0 9
0 0 0 0 0 0
输出文件名:maxflowa.out
8
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=1010,Inf=0x7fffffff/3;int n,s,x,tot=1,ans=0;struct edge{ int to,next,w;}G[maxn*10];int h[maxn],q[maxn*10],cur[maxn],vis[maxn];void add(int x,int y,int z){ ++tot; G[tot].to=y; G[tot].w=z; G[tot].next=h[x]; h[x]=tot;}bool bfs(){ memset(vis,-1,sizeof(vis)); int head=1; int t=1,now; q[1]=1; vis[1]=0; while (head<=t){ now=q[head];head++; for (int i=h[now];i;i=G[i].next) if (vis[G[i].to]==-1&&G[i].w>0){ vis[G[i].to]=vis[now]+1; q[++t]=G[i].to; } } return vis[n]!=-1;}int dfs(int x,int f){ if (x==n) return f; int w,used=0; for (int i=cur[x];i;i=G[i].next) if (vis[G[i].to]==vis[x]+1){ w=f-used; w=dfs(G[i].to,min(w,G[i].w)); G[i].w-=w; G[i^1].w+=w; if (G[i].w>0) cur[x]=i; used+=w; if (used==f) return f; } if (!used) vis[x]=-1; return used;}void dinic(){ ans=0; while (bfs()){ for (int i=1;i<=n;++i) cur[i]=h[i]; ans+=dfs(1,Inf); }return;}int main(){ freopen("maxflowa.in","r",stdin); freopen("maxflowa.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;++i) for (int j=1;j<=n;++j){ int x; scanf("%d",&x); if (x>0){ add(i,j,x); add(j,i,0); } } dinic(); printf("%d",ans); return 0;}
0 0
- 最大流dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流dinic 模板
- 最大流dinic模板
- 最大流dinic模板
- 最大流:Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- dinic最大流模板
- 最大流dinic模板
- dinic 最大流模板
- ACM 最大流 dinic 模板
- 最大流模板(Dinic, ISAP)
- hdu4888 最大流,dinic模板
- 最大流 dinic算法模板
- POJ_3281_Dining(最大流dinic模板)
- hdu4813 Hard Code
- 手把手教学发布IIS
- 集合中关系说明
- sublime text主题预览
- Wireless Network
- 最大流dinic模板
- 删除字符串中出现次数最少的字符
- 漫谈程序员(二)程序员保值的4个秘密
- hdoj 4738 tarjan求无向图的桥
- owncloud源码分析2--数据库增删改查
- 华为OJ(找出字符串中第一个只出现一次的字符)
- Android注解框架AndroidAnnotations学习笔记
- android 自定义ProgressBar
- 既可以滑动也可以点击切换(ViewPager跟Fragment)