【网络流之最大流】HDU3549Flow Problem【EK模板】
来源:互联网 发布:宝马320li2017款数据 编辑:程序博客网 时间:2024/05/17 02:55
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549
Problem Description
Network flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted directed graph.
Input
The first line of input contains an integer T, denoting the number of test cases.
For each test case, the first line contains two integers N and M, denoting the number of vertexes and edges in the graph. (2 <= N <= 15, 0 <= M <= 1000)
Next M lines, each line contains three integers X, Y and C, there is an edge from X to Y and the capacity of it is C. (1 <= X, Y <= N, 1 <= C <= 1000)
For each test case, the first line contains two integers N and M, denoting the number of vertexes and edges in the graph. (2 <= N <= 15, 0 <= M <= 1000)
Next M lines, each line contains three integers X, Y and C, there is an edge from X to Y and the capacity of it is C. (1 <= X, Y <= N, 1 <= C <= 1000)
Output
For each test cases, you should output the maximum flow from source 1 to sink N.
Sample Input
23 21 2 12 3 13 31 2 12 3 11 3 1
Sample Output
Case 1: 1Case 2: 2
代码:
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>using namespace std;const int MAXN=1010;int n,m,st,ed;int Map[MAXN][MAXN],pre[MAXN],path[MAXN],flow[MAXN];int bfs(){ queue<int>q; memset(path,-1,sizeof(path)); path[st]=0; flow[st]=1<<29; q.push(st); while(!q.empty()){ int t=q.front(); q.pop(); if(t==ed) break; for(int i=1;i<=n;i++){ if(path[i]==-1&&Map[t][i]){ flow[i]=min(flow[t],Map[t][i]); q.push(i); path[i]=t; } } } if(path[ed]==-1) return -1; return flow[ed];}int EK(){ int max_flow=0,now,pre,Flow; while((Flow=bfs())!=-1){ max_flow+=Flow; now=ed; while(st!=now){ pre=path[now]; Map[pre][now]-=Flow; Map[now][pre]+=Flow; now=path[now]; } } return max_flow;}int main(){ cin.sync_with_stdio(false); int t,Case=1,u,v,c; cin>>t; while(t--){ cin>>n>>m; memset(Map,0,sizeof(Map)); for(int i=0;i<m;i++){ cin>>u>>v>>c; Map[u][v]+=c; } st=1,ed=n; cout<<"Case "<<Case++<<": "<<EK()<<endl; } return 0;}
0 0
- 【网络流之最大流】HDU3549Flow Problem【EK模板】
- hdu3549Flow Problem 最大流模板水题
- hdu3549Flow Problem(最大流 模板题)
- hdu3549Flow Problem(最大流模板题)
- 网络流之最大流算法模板EK
- hdu 3549 Flow Problem(最大流EK算法模板)
- HDU 3549 Flow Problem【最大流模板题,EK算法】
- 最大流EK算法模板
- 最大流EK算法模板
- 【模板】EK求最大流
- 【网络流】最大流:Drainage Ditches【EK模板】
- 【网络流】最大流:PIGS【EK模板、建图题】
- 网络最大流增广路模板(EK & Dinic)
- HDU3549_Flow Problem(网络流/EK)
- 【网络流之最大流】POJ1459-Power Network【EK模板题】
- 网络最大流算法之 Ford_Fulkerson方法,EK算法 c++模板
- 网络最大流算法之Ford_Fullkerson方法,EK算法c++模板
- 最大网络流 EK 算法
- [leetcode] 179. Largest Number
- 爬虫爬取信息存入数据库
- Spring Mybatis整合
- 【醒目】【业界偷懒】【Public】BZOJ题目一句话题解整理
- opencv中批量读取图片并保存
- 【网络流之最大流】HDU3549Flow Problem【EK模板】
- 40.左旋转字符串:string.append()应用
- <OJ_Sicily>1214信号分析
- 一篇文章看懂iOS代码块Block
- 【连载】关系型数据库是如何工作的?(14) - 查询管理器之Nested Join
- 给Android ListView添加删除item动画
- 正则表达式基本语法
- 使用动画完成弹性滑动
- 猜数游戏