ICPC-Beijing 2006 狼抓兔子
题解:
裸的最小割。
但是最大流跑不过去怎么办?
转变一下,既然最大流是一条左下<->右上的通路,我们可以把图划分为若干区域,
最后找左下到右上的最短路就行了。
代码:
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = ;
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
int n,m,s,t,hed[*N*N],cnt;
int _id(int i, int j, int k) {
if(i>n||j<)return ;
if(i<||j>m)return n*m<<|;
return (i - ) * m + j + k * n * m;
}
struct EG
{
int to,nxt;
ll w;
}e[*N*N];
void ae(int f,int t,ll w)
{
e[++cnt].to = t;
e[cnt].nxt = hed[f];
e[cnt].w = w;
hed[f] = cnt;
}
struct Pair
{
int x;
ll d;
Pair(){}
Pair(int x,ll d):x(x),d(d){}
friend bool operator < (Pair a,Pair b){return a.d>b.d;}
}tp;
ll dis[*N*N];
bool vis[*N*N];
void dij()
{
priority_queue<Pair>q;
memset(dis,0x3f,sizeof(dis));dis[s]=;
q.push(Pair(s,));
while(!q.empty())
{
tp = q.top();
q.pop();
int u = tp.x;
if(vis[u])continue;
vis[u]=;
for(int j=hed[u];j;j=e[j].nxt)
{
int to = e[j].to;
if(dis[to]>dis[u]+e[j].w)
{
dis[to] = dis[u]+e[j].w;
q.push(Pair(to,dis[to]));
}
}
}
}
int main()
{
read(n),read(m);
n--,m--;
s = ,t = n*m<<|;
for(int i=;i<=n+;i++)
for(int w,j=;j<=m;j++)
{
read(w);
ae(_id(i,j,),_id(i-,j,),w);
ae(_id(i-,j,),_id(i,j,),w);
}
for(int i=;i<=n;i++)
for(int w,j=;j<=m+;j++)
{
read(w);
ae(_id(i,j,),_id(i,j-,),w);
ae(_id(i,j-,),_id(i,j,),w);
}
for(int i=;i<=n;i++)
for(int w,j=;j<=m;j++)
{
read(w);
ae(_id(i,j,),_id(i,j,),w);
ae(_id(i,j,),_id(i,j,),w);
}
dij();
printf("%lld\n",dis[t]);
return ;
}
ICPC-Beijing 2006 狼抓兔子的更多相关文章
- P4001 [ICPC-Beijing 2006]狼抓兔子
题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子 平面图 边与边只在顶点相交的图. 对偶图 对于一个平面图,都有其对应的对偶图. 平面图被划分出的每一个区域当作对偶图的一个点: 平 ...
- 2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割)
2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割) https://www.luogu.com.cn/problem/P4001 题意: 把图分成两部分需要的最 ...
- 洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 解题:BJOI 2006 狼抓兔子
题面 可以看出来是最小割,然后你就去求最大流了 这么大的范围就是让你用网络流卡的?咋想的啊=.=??? 建议还是老老实实用 平面图最小割等于其对偶图最短路 这个东西来做吧,虽然这个东西跑的也挺慢的,最 ...
- [BZOJ 2006] 狼抓兔子
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1001 [算法] 最小割 [代码] #include<bits/stdc++.h ...
- BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路
问题描述 BZOJ1001 LG4001 题解 平面图最小割=对偶图最短路 假设起点和终点间有和其他边都不相交的一条虚边. 如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个 ...
- 【洛谷4001】 [ICPC-Beijing 2006]狼抓兔子(最小割)
传送门 洛谷 Solution 直接跑最小割板子就好了. 代码实现 #include<stdio.h> #include<stdlib.h> #include<strin ...
- bzoj1001 [ICPC-Beijing 2006]狼抓兔子
我满心以为本题正解为最短路,结果到处都是最大流…… 几乎所有的都写了什么“对偶图”跑最短路,但我真的不知道什么叫做对偶图---------------------------------------- ...
- 洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图
正解:网络流+对偶图 解题报告: 传送门! $umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$ 然后网格图的话显然是个平面图,又看到数据范围$n ...
随机推荐
- python __builtins__ staticmethod类 (64)
64.'staticmethod', 返回静态方法 class staticmethod(object) | staticmethod(function) -> method | | Conve ...
- noip 2018 Day2 T1 旅行
暴力删边,暴力枚举 #include <bits/stdc++.h> using namespace std; #define MAXM 5010 inline int read() { ...
- Luogu P1542包裹快递【实数域二分】 By cellur925
题目传送门 题目中说:最大值最小,显然是一个二分答案嘛qwq. 我们二分的答案显然是速度,但是由于实际中每一段的速度可能不同,所以这里我们把所有段进行的速度都定为二分出的答案. 二分的步骤好说,只是c ...
- hdu 3172 Virtual Friends (字符串的并查集)
一开始一直wa,因为第一个数字t也是多组输入. 然后一直超时,因为我用的是C++里面的cin,所以非常耗时,几乎比scanf慢了10倍,但是加上了一个语句后: std::ios::sync_with_ ...
- js、css外部文件的相对路径问题
如果js.css外部文件有使用到相对路径时,需要注意其相对路径的基准是不一样的. 比如说,在index.html中引用到了外部的js和css文件,这两个文件都通过相对路径引用了某一张图片:这些文件所在 ...
- UltraEdit的免费激活方法
本来前段时间用UE编辑器用的好好的,然后今天突然提示我使用到期,需要购买激活.一脸懵逼中,只好再次激活,谁知道按照原来的方法激活的时候一直提示您输入的许可证id或密码错误 请您检查注册邮件并且重试. ...
- 微信小程序生成分享图片,保存到本地
1.页面 <canvas canvas-id="shareCanvas" style="width:600px;height:900px">< ...
- ES6学习笔记(8)----对象的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...
- java 读取txt,java读取大文件
java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File;import java.io.RandomAccessFile;i ...
- github 下载全部项目
从github下载资料过程中,有些项目含有子模块,有时通过git clone 或者下载zip方式项目可能会缺少文件,因此需要执行 git submodule update --init --recur ...