hdu 3549 Flow Problem【最大流问题】【FF】
来源:互联网 发布:网络运维与管理pdf 编辑:程序博客网 时间:2024/06/03 22:40
Flow Problem
Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 11848 Accepted Submission(s): 5627
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 <stdio.h>#include <iostream>#include <string.h>#include <queue>using namespace std;const int N=1005;int pre[N]; //保存增广路径上的点的前驱顶点bool vis[N];int map[N][N];int s,t; //s为源点,t为汇点int n,m;bool bfs(){ int i,cur; queue<int >q; memset(pre,0,sizeof(pre)); memset(vis,0,sizeof(vis)); vis[s]=true; q.push(s); while(!q.empty()) { cur=q.front(); q.pop(); if(cur==t)return true; for(int i=1;i<=n;i++) { if(vis[i]==0&&map[cur][i]) { q.push(i); pre[i]=cur; vis[i]=true; } } } return false;}int Max_Flow(){ int ans=0; while(1) { if(!bfs())return ans; int Min=0x3f3f3f3f; for(int i=t;i!=s;i=pre[i]) { Min=min(Min,map[pre[i]][i]); } for(int i=t;i!=s;i=pre[i]) { map[pre[i]][i]-=Min; map[i][pre[i]]+=Min; } ans+=Min; }}int main(){ int T,k=1; int u,v,c; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); s=1; t=n; memset(map,0,sizeof(map)); for(int i=0;i<m;i++) { scanf("%d%d%d",&u,&v,&c); map[u][v]+=c; } printf("Case %d: %d\n",k++,Max_Flow()); }}
0 0
- hdu 3549 Flow Problem【最大流问题】【FF】
- HDU 3549 Flow Problem (简单最大流问题)
- HDU-3549 Flow Problem【最大流】
- hdu 3549 Flow Problem【最大流】
- hdu 3549 Flow Problem 最大流
- hdu 3549 Flow Problem (最大流)
- hdu - 3549 - Flow Problem(最大流)
- Hdu 3549 Flow Problem - 最大流
- HDU 3549 Flow Problem 最大网络流
- hdu 3549 最大网络流 Flow Problem
- hdu 3549 Flow Problem(最大流)
- HDU 3549 Flow Problem (最大流)
- HDU 3549--Flow Problem【最大流】
- HDU 3549--Flow Problem 【最大流 && dinic】
- HDU 3549 Flow Problem【最大流】
- HDU 3549 Flow Problem(最大流)
- hdu 3549 Flow Problem【Dinic最大流】
- HDU 3549 Flow Problem(最大流)
- Java 保留7位小数字
- 关于出现Specified VM install not found: type Standard VM, name jdk1.5.0_04问题的解决办法
- IIS 负载均衡
- Java 版在线查看 pdf
- junit忽略测试方法
- hdu 3549 Flow Problem【最大流问题】【FF】
- IOS开发: storyboard之 prepareForSegue:sender: && 设置为跟控制器
- iOS 制作的framework里使用国际化方案
- matlab修改打开时的默认路径的最简单使用的方法
- java POI导出excel(带有图片的数据)以及ftp上传图片到另一台服务器的方法参考代码
- GreenDao自带异步操作类简析
- java I/O流详解
- 《java设计模式》责任链模式
- Android-PullToRefresh onRefreshComplete()失效问题