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 教授正在为国家航天中心计 ...
随机推荐
- 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent ...
- angularJS1笔记-(1)-多控制器
前端写好: <div ng-app="myApp"> <div ng-controller="firstController"> < ...
- 关闭SSD(固态硬盘)节能功能 提搞SSD性能
此方法可以缓解比如QQ聊天时能明显感觉到打字过程不连续,0.1s左右的间歇停顿,操作系统并不会锁死,系统突然停止响应,硬盘灯狂闪,鼠标指针成为圆圈,点什么都没反应,这种状况可能会持续1-2分钟, ...
- CSS 报错
- SQL语句查询一个数据库中的所有表
--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns whe ...
- HTML标签参考手册
按字母顺序排列 New : HTML5 中的新标签. 标签 描述 <!--...--> 定义注释. <!DOCTYPE> 定义文档类型. <a> 定义锚. < ...
- 高性能页面加载技术--BigPipe设计原理及Java简单实现
1.技术背景 动态web网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动性和页面显示效果上有了很大的提升,但是对于网站动态网站的整体页面 ...
- 相见恨晚的 scala - 01 [ 基础 ]
简洁到不行,多一个分号都是不应该. 学习笔记: centOS 下安装 scala 和安装 jdk 一毛一样 . 1 . 不同于 Java 的变量声明 :( 但是和 js 很像 ) /** * Crea ...
- Introduction to One-class Support Vector Machines
Traditionally, many classification problems try to solve the two or multi-class situation. The goal ...
- Business Cards UVALive - 4384(画图看图。。)
只能由三种情况 都横着放 都竖着放 横和竖交错放 那就去判断好了... 具体看代码 #include <iostream> #include <cstdio> #inclu ...