POJ 3549 Flow Problem
来源:互联网 发布:工作流程如何优化 编辑:程序博客网 时间:2024/06/06 17:13
Flow Problem
Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 16777 Accepted Submission(s): 7910
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<string.h>#include<algorithm>#include<queue>using namespace std;const int INF = 1e9 + 7;const int maxm = 2005;int head[maxm], V[maxm], W[maxm], Next[maxm], cur[maxm], dep[maxm];int n, m, cnt, s, t;void init(){cnt = -1, s = 1, t = n;memset(head, -1, sizeof(head));memset(Next, -1, sizeof(Next));}void add(int u, int v, int w){cnt++;Next[cnt] = head[u];head[u] = cnt;V[cnt] = v;W[cnt] = w;}int bfs(){queue<int>q;memset(dep, 0, sizeof(dep));dep[s] = 1;q.push(s);while (!q.empty()){int u = q.front();q.pop();for (int i = head[u]; i != -1;i = Next[i]){if (dep[V[i]] == 0 && W[i] != 0){dep[V[i]] = dep[u] + 1;q.push(V[i]);}} }if (dep[t] == 0) return 0;return 1;}int dfs(int u, int flow){if (u == t) return flow;for (int i = cur[u];i != -1;i = Next[i]){if (dep[V[i]] == dep[u] + 1 && W[i] > 0){int d = dfs(V[i], min(W[i], flow));if (d > 0){W[i] -= d, W[i ^ 1] += d;return d;}}}return 0;}int dinic(){int ans = 0;while (bfs()){for (int i = 1;i <= n;i++)cur[i] = head[i];ans += dfs(s, INF);}return ans;}int main(){int i, j, k, sum, T, x, y, z, cas = 0;scanf("%d", &T);while (T--){scanf("%d%d", &n, &m);init();for (i = 1;i <= m;i++){scanf("%d%d%d", &x, &y, &z);add(x, y, z);add(y, x, 0);}printf("Case %d: %d\n", ++cas, dinic());}return 0;}
阅读全文
0 0
- POJ 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
- HDU 3549 Flow Problem
- HDU 3549 Flow Problem
- hdu 3549 Flow Problem
- hdu 3549Flow Problem
- HDU 3549 Flow Problem
- ORA-01034: ORACLE not available ORA-27101
- POJ-2282题解&数位DP总结
- 手机上如何让页面强制横屏
- Hibernate@OneToOne关联映射的三种形式
- 设计原则
- POJ 3549 Flow Problem
- 学习JS你得走的路有哪些?
- 关于CheckBox反复调用attr("checked", false)不好使情况
- FCC——Convert HTML Entities
- Redhat从源安装Python2.7.12
- Communications link failure:The last packet sent successfully to the server was 0 milliseconds ago.
- CentOS修改MySQL的root密码
- TextView设置背景图片为.9.png文字不显示
- Microsoft Mixed Reality 环境搭建心得