网络流 HDU 3549 Flow Problem

题目:

pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549

用增广路算法进行求解。注意的问题有两个:

1. 每次增广的时候,反向流量也要进行更行。一開始没注意,WA了几次 ORZ

2. 对于输入的数据,容量要进行累加更新。

// 邻接矩阵存储

#include <bits/stdc++.h>

using namespace std;

const int INF = 0x7fffffff;
const int M = 15+5;
int c[M][M]; // capacity
int f[M][M]; // flow
int flow[M]; // current flows
int p[M]; // path // 增广路算法
long long MaxFlow(int n)
{
long long cnt = 0;
while(true)
{
queue<int> q;
q.push(1);
memset(flow, 0, sizeof(flow));
flow[1] = INF; while(!q.empty())
{
int u = q.front();
q.pop(); for(int v=1; v<=n; ++v)
{
if ( u != v && c[u][v] > f[u][v] && !flow[v] /*避免回环*/ )
{
q.push(v);
flow[v] = min(flow[u], c[u][v]-f[u][v]);
p[v] = u;
}
}
} if (flow[n]==0)
break; // 无增广了, 退出 // 进行增广
//cout<<flow[n]<<endl;
for(int v=n; v != 1; v=p[v])
{
f[p[v]][v] += flow[n];
f[v][p[v]] -= flow[n]; // 反向更新, 有流入。流出自然也应该添加! WA 了几次才发现 orz
} cnt += flow[n];
} return cnt;
} int main(void)
{
//freopen("in.txt", "r", stdin); int iCase =1;
int t = 0;
cin>>t;
while(t--)
{
memset(c, 0, sizeof(c));
memset(f, 0, sizeof(f)); int n, m;
scanf("%d%d", &n, &m); for(int i=0; i<m; ++i)
{
int s,e,v;
scanf("%d%d%d", &s, &e, &v);
c[s][e] += v; // 流入的容量要进行累加
} // 特例直接推断
if (n <= 1 || m < 1)
{
printf("Case %d: 0\n", iCase++);
continue;
} long long cnt = MaxFlow(n);
printf("Case %d: %lld\n", iCase++, cnt); } return 0;
}

网络流 HDU 3549 Flow Problem的更多相关文章

  1. HDU 3549 Flow Problem(最大流)

    HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...

  2. hdu 3549 Flow Problem

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Description Network flow is a well- ...

  3. hdu 3549 Flow Problem【最大流增广路入门模板题】

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...

  4. HDU 3549 Flow Problem 网络流(最大流) FF EK

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  5. hdu 3549 Flow Problem Edmonds_Karp算法求解最大流

    Flow Problem 题意:N个顶点M条边,(2 <= N <= 15, 0 <= M <= 1000)问从1到N的最大流量为多少? 分析:直接使用Edmonds_Karp ...

  6. hdu 3549 Flow Problem (网络最大流)

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  7. HDU 3549 Flow Problem (最大流ISAP)

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  8. hdu 3549 Flow Problem (Dinic)

    Flow ProblemTime Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  9. hdu 3549 Flow Problem 最大流问题 (模板题)

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

随机推荐

  1. 定时清理clientmqueue目录垃圾文件防止占满磁盘空间

    RedHat/CentOS 5.8 默认就有sendmail,而6.4默认没有.   手动清理方法: find /var/spool/clientmqueue/ -type f|xargs rm -f ...

  2. 文件流转base64字符串

    public static string GetBase64Data() { string path = @"C: \txt.jpg"; FileStream filestream ...

  3. Java正则类

    ava.util.regex 类 Pattern java.lang.Object 继承者 java.util.regex.Pattern 所有已实现的接口: Serializable public ...

  4. logging.config模块---使用配置文件管理logger

    logging配置文件 一.使用到的模块: logging.config 官方文档: https://docs.python.org/3/library/logging.config.html 非官方 ...

  5. UVA-1602 Lattice Animals 搜索问题(打表+set)

    题目链接 https://vjudge.net/problem/UVA-1602 紫书的一道例题,跟之前的很多题目有很多不同. 本题不像是一般的dfs或bfs这样的搜索套路,而是另一种枚举思路. 题意 ...

  6. [SCOI2012]喵星球上的点名(树状数组+后缀数组)

    我们把所有的名,姓,询问都拼起来构成一个新的长串,然后跑一边SA.排完序后对于每一个询问,我们可以二分求出它所对应的区间(即满足这个区间的前缀都是这个询问串).然后问题就转化为很多区间问区间出现过的不 ...

  7. luogu P1405 苦恼的小明(欧拉定理)

    题意 求a1^a2^a3^...^an(mod10007)n<=1000000,a[i]<=10000 题解 明眼人一眼就可以看出是欧拉定理的推论. 首先这个题是错的,没说保证互质. 然而 ...

  8. PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql

    在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件.聊天服务器发送广播等.如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢. Swoole 的 TaskWorker 进程 ...

  9. caioj 1158 欧拉函数

    直接套模板,这道题貌似单独求还快一些 解法一 #include<cstdio> #include<cctype> #define REP(i, a, b) for(int i ...

  10. Myeclipse学习总结(8)——Eclipse实用操作

    工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个"器".本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行 ...