1. 栅格网络流

    ★★☆ 输入文件: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)

    接着有两个矩阵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) 所示即为样例中栅格中的一个最大流。

/*
平面图转对偶图.
最小割转最短路.
平面图:一个图G=(V,E),若能将其画在平面上,且任意两条边的交点只能是G的顶点
对偶图中的环与平面图中的割一一对应.
这题是有向边 大体做法就是将边统一顺时针旋转90度.
然后将外部面上的点与S,T连接.
然后这题要开unsigned long long.
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define MAXN 10111
#define INF 1e17
#define LL unsigned long long
using namespace std;
int n,m,cut,ans,head[MAXN],S,T,b[MAXN];;
LL dis[MAXN];
struct data{int v,next;LL c;}e[MAXN*8];
queue<int>q;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
void add(int u,int v,int c)
{
e[++cut].v=v;e[cut].c=c;e[cut].next=head[u];head[u]=cut;
}
int slove(int x,int y)
{
return (x-1)*(m+1)+y;
}
void spfa(int t)
{
for(int i=S;i<=T;i++) dis[i]=INF;dis[S]=0;q.push(S);
while(!q.empty())
{
int u=q.front();q.pop();b[u]=false;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].v;
if(dis[v]>dis[u]+e[i].c)
{
dis[v]=dis[u]+e[i].c;
if(b[v]!=t) b[v]=t,q.push(v);
}
}
}
return ;
}
void Clear()
{
memset(head,0,sizeof head);
cut=0;
return ;
}
int main()
{
freopen("flowa.in","r",stdin);
freopen("flowa.out","w",stdout);
int t,x;t=read();
while(t--)
{
Clear();
n=read(),m=read();
S=0,T=(n+1)*(m+1)+1;
for(int i=1;i<=n;i++)
for(int j=2;j<=m;j++)
{
x=read();
add(slove(i,j),slove(i+1,j),x);
add(slove(i+1,j),slove(i,j),x);
}
for(int i=2;i<=n;i++)
for(int j=1;j<=m;j++)
{
x=read();
add(slove(i,j),slove(i,j+1),x);
add(slove(i,j+1),slove(i,j),x);
}
for(int i=2;i<=m;i++) add(S,i,0);
for(int i=2*(m+1);i<=T-2;i+=(m+1)) add(S,i,0);
for(int i=m+2;i<=T-2;i+=(m+1)) add(i,T,0);
for(int i=n*(m+1)+2;i<=T-2;i++) add(i,T,0);
spfa(t+1);cout<<dis[T]<<endl;
}
return 0;
}

Cogs 750. 栅格网络(对偶图)的更多相关文章

  1. [网络流24题] COGS 750 栅格网络流

    750. 栅格网络流 ★★☆   输入文件:flowa.in   输出文件:flowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太 ...

  2. COGS 750. 栅格网络流

    ★★☆   输入文件:flowa.in   输出文件:flowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决 ...

  3. 栅格网络流(cogs 750)

    [问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决,于是他想尝试一个简单点的:栅格网络中的最大流问题,这个虽说简单了一点,但对 Bob 来说依旧太难,现在他有个麻烦需要你帮忙:给你一 ...

  4. 图论(网络流,分数规划):COGS 2047. [ZOJ2676]网络战争

    2047. [ZOJ2676]网络战争 ★★★   输入文件:networkwar.in   输出文件:networkwar.out   评测插件 时间限制:5 s   内存限制:32 MB [题目描 ...

  5. Cogs 6. 线型网络

    6. 线型网络 ★★☆   输入文件:linec.in   输出文件:linec.out   简单对比时间限制:1 s   内存限制:256 MB [问题描述] 有 N(N<=20)台 PC 放 ...

  6. COGS 栅格网络流

    750. 栅格网络流 http://www.cogs.pro/cogs/problem/problem.php?pid=750 ★★☆   输入文件:flowa.in   输出文件:flowa.out ...

  7. cogs750栅格网络流(最小割)

    750. 栅格网络流 ★★☆   输入文件:flowa.in   输出文件:flowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太 ...

  8. Sass-也许你想和CSS玩耍起来(下篇)

    问心无愧,共勉! sass-也许你想和CSS玩耍起来(上篇) 上篇中主要介绍了一些sass的基本特性.下篇中,主要是写一些我们常用的sass控制命令,函数和规则. sass进阶 控制命令 可能看过上篇 ...

  9. bootstrap_开始

    bootstrap 一个移动设备优先 UI 库,底层是用 less 写的,依赖于 jQuery. 面试点: bootstrap 的所有盒子都是怪异盒子模型(box-sizing: border-box ...

随机推荐

  1. Electron-vue中通过WebAudioApi实现录音功能,并转换为mp3格式,实时监测音频设备变化

    实现以下功能: 1.检测当前音频环境,是否支持录音(WebAudio Api): 2.获取输入.输出设备列表,获取电脑默认的音频设备: 3.试音功能,通过分析录音样本数据,判断是否录到声音: 4.实时 ...

  2. Python Unittest进行接口测试的简单示例

    今年肯定是要把Python学到一定程度的,否则感觉自己混不下去了,那就开始半挣扎的咸鱼生活吧. ---------------------------------------------------- ...

  3. idea for mac 快捷键整理

    ⌘O 查找类文件 ⌘⌥O 前往指定的变量 / 方法 ⌘⇧O 查找所有类型文件.打开文件.打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠/ ⌘⌥← / ⌘⌥→ 退回 / 前进到上一个操作的地方 ...

  4. docker registry-v2 搭建私有仓库

    参考官方文档:https://docs.docker.com/registry/deploying/ 参考 :http://www.tuicool.com/articles/6jEJZj 本例子使用两 ...

  5. 2..net core 和.net framework 版本

    同一台机器上可以安装多个版本的.net core runtime.比如: 每个.net core项目都可以指定自己所用的版本,所以改变某个项目的target version不会影响到其他的.安装新的r ...

  6. 【转载】C#中PadLeft函数按特定字符补足字符串长度

    在C#开发过程中字符串String类处理过程中,有时字符串长度不够时,需要在左侧指定特定的字符来补足字符串长度,此时可以使用String类下的PadLeft方法对字符串的左边进行按特定的字符和特定的长 ...

  7. 【完整篇】orangepi香橙派新手入门之被官方坑

    图片特意缩小,看不清请打开另一个窗口查看原图. 第一步:烧录系统,我烧录的是Ubuntu_Desktop[请注意!!!!用户名是错的!!用户名是错的!!用户名是错的!!] 正确的用户名是orangep ...

  8. 3.JUC之volatile

    原文链接:http://blog.csdn.net/zteny/article/details/54888629 一.简介 volatile是Java语言的关键字,用来修饰可变变量(即该变量不能被fi ...

  9. Swagger 接口文档规范

    导语: 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是 ...

  10. Computer Vision_33_SIFT:LIFT: Learned Invariant Feature Transform——2016

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...