网络流 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的更多相关文章
- HDU 3549 Flow Problem(最大流)
HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- hdu 3549 Flow Problem
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Description Network flow is a well- ...
- hdu 3549 Flow Problem【最大流增广路入门模板题】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...
- HDU 3549 Flow Problem 网络流(最大流) FF EK
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- hdu 3549 Flow Problem Edmonds_Karp算法求解最大流
Flow Problem 题意:N个顶点M条边,(2 <= N <= 15, 0 <= M <= 1000)问从1到N的最大流量为多少? 分析:直接使用Edmonds_Karp ...
- hdu 3549 Flow Problem (网络最大流)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- HDU 3549 Flow Problem (最大流ISAP)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- hdu 3549 Flow Problem (Dinic)
Flow ProblemTime Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- hdu 3549 Flow Problem 最大流问题 (模板题)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
随机推荐
- sftp权限
用户: t1 t2 根目录: /home/data/ /home/data/t1/ drwxr-xr-x. 2 t1 t1 4096 Mar 24 17:26 t1 /home/data/t2/ dr ...
- ActiveMQ学习笔记(10)----ActiveMQ容错的连接
1. Failover Protocol 前面讲述的都是Client配置连接到指定的broker上,但是,如果Broker的连接失败怎么办呢?此时,Client有两个选项:要么立刻死掉,要么连接到其他 ...
- servlet关于转发用法
# 1.转发 ## (1)什么是转发? 一个web组件将未完成的处理交给另外一个web组件继续做. 注: web组件(servlet/jsp) 最常见的情况: ...
- URL正则
现有需求 表单填写域名只能填写 baseURL 或者 baseURL+端口 不带协议 否则为不合法 String url1 = ".com:90"; String url2 = & ...
- oracle数据库回滚
线下测试数据误操作,回滚攻略--把数据捞出来,这个时间自己设置--表名一定要是:xx_tbd日期 CREATE TABLE user_tbd0718ASselect * from user as of ...
- LaTeX 简介与安装
1 LaTeX 简介 Leslie Lamport 开发的 LaTeX 是当今世界上最流行和使用最为广泛的TeX格式.它构筑在Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的 ...
- ios开发经常使用到的第三方库
由于iOS SDK相对照较底层,所以开发人员就得受累多做一些体力活.只是幸运的是,有非常多第三方的类库能够用来简化非常多不必要的工作.经过作者团队的谨慎讨论.他们 评选出了10款可以极大提高iOS开发 ...
- RubyMine2017破解
RubyMine2017破解 学习了:https://www.7down.com/soft/172903.html 激活的时候选择 license server; 输入如下地址激活: http://i ...
- cocos2d_x_01_环境搭建
终于效果图: Cocos2d-x-3.3 Mac 安装 下载地址: 參考文档: 在线API列表: Cocos2d-x-3.3 版本号 从配置安装到创建项目都是命令行 官网下载最新版本号Cocos2 ...
- Objective-C对象与Core Foundation对象
Core Foundation 对象主要使用在用C语言编写的Core Foundation 框架中,并引用计数的对象.与Objective-C对象差别非常少.不管哪种框架生成的对象,一旦生成,便可在两 ...