COGS 栅格网络流
750. 栅格网络流
http://www.cogs.pro/cogs/problem/problem.php?pid=750
★★☆ 输入文件:flowa.in
输出文件:flowa.out
简单对比
时间限制:1 s 内存限制:128 MB
【问题描述】
Bob 觉得一般图的最大流问题太难了,他不知道如何解决,于是他想尝试一个简单点的:栅格网络中的最大流问题,这个虽说简单了一点,但对 Bob 来说依旧太难,现在他有个麻烦需要你帮忙:给你一个 N*M 的栅格(如下所示),栅格中的边表示可以流水的管道,边上的数字表示管道的容量,举例说明:在下面图( 2.6.1 )中, (0,0) 和 (1,0) 之间边的容量为 6 ,这意味着这条边(水管)的最大水流量不超过 6 个单位。
N=3 M=3
图 2.6.1 栅格网络流
那么栅格中从 S 到 T 的最大流是多少呢 ? 换句话说 , 某一时刻最多能有多少单位的水从 S 流向 T?
【输入格式】
输入文件的第一行是一个正整数 T ,表示接下来有多少组测试数据。
每一组测试数据的第一行有两个正整数 N,M(1<=N,M<=100)<n<100) 和="" m(1<m<100)="" 。接下来有两个整数矩阵="" h="" (="" n*(m-1)="" )和="" v="" (n-1)*m="" ),="" h[i][j]="" 表示="" (i,j)="" 与="" (i,j+1)="" 之间边的容量,="" v[i][j]="" (i+1,j)="" 中所有的数均非负且小于="" 10^10="" 。<="" p="">
接着有两个矩阵H(N*(M-1)),V((N-1)*M),H[i][j]表示(i,j)->(i,j+1)的流量;
V[i][j]表示(i,j)->(i+1,j)的流量。
【输出格式】
每一组测试数据输出只有一行,包含一个整数,即从 S(0,0) 到 T(N-1,M-1) 的栅格网络的最大流,不允许出现多余的空格。
【输入样例】
输入文件名: flowa .in
1
3 3
0 1
2 3
4 5
6 7 8
9 10 11
输出文件名: flowa .out
6
提示:下图 (2.6.2) 所示即为样例中栅格中的一个最大流。
N=3 M=3
图 2.6.2 一个解决方案
平面图转对偶图求最小割
#include<cstdio>
#include<queue>
#include<cstring>
#define N 10010
#define M 50010
using namespace std;
int T,n,m,ans,tot;
int src,dec,next[M],to[M],front[N],cap[M];
long long DIS[N];
struct edge
{
int number;
long long dis;
bool operator <(edge b) const
{
return dis>b.dis;
}
}e[M];
priority_queue<edge>q;
void add(int u,int v,int w)
{
to[++tot]=v;next[tot]=front[u];front[u]=tot;cap[tot]=w;
to[++tot]=u;next[tot]=front[v];front[v]=tot;cap[tot]=w;
}
bool dijkstra()
{
for(int i=;i<=dec;i++) DIS[i]=2e9;
q.push((edge){,});
while(!q.empty())
{
edge now=q.top();q.pop();
if(DIS[now.number]!=now.dis) continue;
for(int i=front[now.number];i;i=next[i])
{
if(DIS[to[i]]>DIS[now.number]+1ll*cap[i])
{
DIS[to[i]]=DIS[now.number]+1ll*cap[i];
q.push((edge){to[i],DIS[to[i]]});
}
}
}
printf("%d\n",DIS[dec]);
}
void pre()
{
tot=;
memset(front,,sizeof(front));
}
int main()
{
freopen("flowa.in","r",stdin);
freopen("flowa.out","w",stdout);
scanf("%d",&T);
while(T--)
{
pre();
scanf("%d%d",&n,&m);
int x;
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
{
scanf("%d",&x);
add((i-)*(m+)+j,(i*(m+)+j),x);
}
for(int i=;i<n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&x);
add(i*(m+)+j-,i*(m+)+j,x);
}
dec=(n+)*(m+)-;
for(int i=m+;i+m+<=dec;i+=m+) add(src,i,);
for(int i=n*(m+)+;i<dec;i++) add(src,i,);
for(int i=;i<m;i++) add(i,dec,);
for(int i=*m+;i+m<=dec;i+=m+) add(i,dec,);
dijkstra();
}
return ;
}
优先队列 重载运算符 记住 里面是< 重载为 >
COGS 栅格网络流的更多相关文章
- [网络流24题] COGS 750 栅格网络流
750. 栅格网络流 ★★☆ 输入文件:flowa.in 输出文件:flowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太 ...
- COGS 750. 栅格网络流
★★☆ 输入文件:flowa.in 输出文件:flowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决 ...
- 栅格网络流(cogs 750)
[问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决,于是他想尝试一个简单点的:栅格网络中的最大流问题,这个虽说简单了一点,但对 Bob 来说依旧太难,现在他有个麻烦需要你帮忙:给你一 ...
- cogs750栅格网络流(最小割)
750. 栅格网络流 ★★☆ 输入文件:flowa.in 输出文件:flowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太 ...
- Cogs 14. [网络流24题] 搭配飞行员
这道题其实蛮好想的,因为分为正,副飞行员.所以就把正飞行员当作Boy,副飞行员当作Girl.然后做Hungry即可. #include<bits/stdc++.h> using names ...
- [COGS 0014][网络流24题] 搭配飞行员
先贴题面 14. [网络流24题] 搭配飞行员 ★★☆ 输入文件:flyer.in 输出文件:flyer.out简单对比时间限制:1 s 内存限制:128 MB [问题描述] 飞行 ...
- Cogs 732. [网络流24题] 试题库(二分图)
[网络流24题] 试题库 ★★ 输入文件:testlib.in 输出文件:testlib.out 评测插件 时间限制:1 s 内存限制:128 MB «问题描述: 假设一个试题库中有n道试题.每道试题 ...
- Cogs 739. [网络流24题] 运输问题(费用流)
[网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: «编程任务: 对于给定的m 个仓库和n 个零售 ...
- Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)
[网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...
随机推荐
- “吃神么,买神么”的第三个Sprint冲刺总结
第三阶段Spring的目标以及完成情况: 时间:6.16——6.26(10天) 目标:第三阶段主要是前台设计的修改完善,以及数据库成功连接,完成小部分功能 情况:前台界面完善,完成小部分功能(发布功能 ...
- 标头 header()函数的用法
头 (header) 是服务器以 HTTP 协议传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔. 范例一: 本例使浏览器重定向到 PHP 的官方网站. <? ...
- ASP.NET MVC 2.0 参考源码索引
http://www.projky.com/asp.netmvc/2.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...
- [转帖] sqlserver CAL 授权模式下 只能够有20个core的使用问题
http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进 ...
- jQuery : 有关TypeError: invalid ‘in’ operand obj的错误
参考 lwx2615 的博客 ,网站: http://blog.csdn.net/lwx2615/article/details/9668777 由PHP返回一个json数据 $.ajax({ ur ...
- dbgrid控件如何能在左边显示行号?
procedure TMSWageEdit.aqyMSWageEditCalcFields(DataSet: TDataSet);begin inherited; with DataSet do ...
- BZOJ3252 攻略(贪心+dfs序+线段树)
考虑贪心,每次选价值最大的链.选完之后对于链上点dfs序暴力修改子树.因为每个点最多被选一次,复杂度非常正确. #include<iostream> #include<cstdio& ...
- LOJ #143. 质数判定
题目描述 判定输入的数是不是质数. 输入格式 若干行,一行一个数 x. 行数不超过 1.5×104. 输出格式 对于输入的每一行,如果 x 是质数输出一行 Y,否则输出一行 N. 样例 样例输入 ...
- 只会java,参加acm如何?
作者:董适链接:https://www.zhihu.com/question/31213070/answer/51054677来源:知乎著作权归作者所有,转载请联系作者获得授权. 当然合适,有什么不合 ...
- 【BZOJ2830/洛谷3830】随机树(动态规划)
[BZOJ2830/洛谷3830]随机树(动态规划) 题面 洛谷 题解 先考虑第一问. 第一问的答案显然就是所有情况下所有点的深度的平均数. 考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度 ...