Vijos1734 NOI2010 海拔 平面图最小割
建立平面图的对偶图,把最小割转化成最短路问题
Dijkstra算法堆优化
(被输入顺序搞WA了好几次T_T)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
;
const int maxV=maxN*maxN;
const int inf=0x3f3f3f3f;
struct Edge
{
int to,next;
int dist;
void assign(int t,int n,int d)
{ to=t; next=n; dist=d; }
};
Edge elist[maxV*];
int head[maxV];
int ecnt;
int N;
int dest;
void initEdge()
{
memset(head,-,sizeof(head));
ecnt=;
}
inline void addEdge(int from,int to,int dist)
{
elist[ecnt].assign(to,head[from],dist);
head[from]=ecnt++;
}
void input()
{
scanf("%d",&N);
dest=N*N+;
initEdge();
int w;
;j<=N;j++)
;i<=N;i++)
{
scanf("%d",&w);
,i,w);
else if(j==N) addEdge(N*N+i-N,dest,w);
else addEdge(N*j+i-N,N*j+i,w);
}
;j<=N;j++)
;i<=N;i++)
{
scanf("%d",&w);
-N,dest,w);
,N*j,w);
-N,N*j+i-N,w);
}
;j<=N;j++)
;i<=N;i++)
{
scanf("%d",&w);
if(!j || j==N) continue;
else addEdge(N*j+i,N*j+i-N,w);
}
;j<=N;j++)
;i<=N;i++)
{
scanf("%d",&w);
if(!i || i==N) continue;
-N,w);
}
}
struct Vertex
{
int idx;
int dist;
Vertex() {}
Vertex(int i,int d):idx(i),dist(d) {}
bool operator < (const Vertex& other) const
{ return this->dist > other.dist; }
};
int dist[maxV];
int open[maxV];
std::priority_queue<Vertex> que;
int dijkstra()
{
memset(dist,0x3f,sizeof(dist));
memset(open,,sizeof(open));
dist[]=; open[]=false;
;
while(cur!=dest)
{
;e=elist[e].next)
{
int& to=elist[e].to;
int& len=elist[e].dist;
if(open[to] && dist[to]>dist[cur]+len)
{
dist[to]=dist[cur]+len;
que.push(Vertex(to,dist[to]));
}
}
Vertex vt;
do { vt=que.top(); que.pop(); }
while(!open[vt.idx]);
cur=vt.idx;
open[cur]=false;
}
return dist[dest];
}
int main()
{
input();
printf("%d\n",dijkstra());
;
}
Vijos1734 NOI2010 海拔 平面图最小割的更多相关文章
- bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路)
bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路) 题目描述: bzoj luogu 题解时间: 首先考虑海拔待定点的$h$都应该是多少 很明显它们都是$0$或$1$,并且所 ...
- BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路
问题描述 BZOJ2007 LG2046 题解 发现左上角海拔为 \(0\) ,右上角海拔为 \(1\) . 上坡要付出代价,下坡没有收益,所以有坡度的路越少越好. 所以海拔为 \(1\) 的点,和海 ...
- BZOJ 2007 海拔(平面图最小割转对偶图最短路)
首先注意到,把一个点的海拔定为>1的数是毫无意义的.实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这 ...
- 洛谷P2046 [NOI2010]海拔(最小割,平面图转对偶图)
传送门 不明白为什么大佬们一眼就看出这是最小割…… 所以总而言之这就是一个最小割我也不知道为什么 然后边数太多直接跑会炸,所以要把平面图转对偶图,然后跑一个最短路即可 至于建图……请看代码我实在无能为 ...
- bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
上来就跑3e5的最大流--脑子抽了 很容易看出,每个地方的海拔都是0或1因为再高了没有意义,又,上去下来再上去没有意义,所以最后一定是从s连着一片0,剩下连着t一片1,然后有贡献的就是01交接的那些边 ...
- B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij
B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij 题意:城市被东西向和南北向的主干道划分为n×n个区域.城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向 ...
- 【BZOJ2007】【NOI2010】海拔(最小割,平面图转对偶图,最短路)
[BZOJ2007][NOI2010]海拔(最小割,平面图转对偶图,最短路) 题面 BZOJ 洛谷 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域. ...
- [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...
- Luogu2046 NOI2010 海拔 平面图、最小割、最短路
传送门 首先一个不知道怎么证的结论:任意点的\(H\)只会是\(0\)或\(1\) 那么可以发现原题的本质就是一个最小割,左上角为\(S\),右下角为\(T\),被割开的两个部分就是\(H=0\)与\ ...
随机推荐
- Nginx windows下搭建过程
内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP ...
- codeforce --- 340D
D. Bubble Sort Graph time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Coprimes - SGU 102(求互质数,水)
题目大意:给你一个正整数N,求出来不超过N 的并且与N互质的正整数的个数. 就是一个大水题~~~ 代码: #include<stdio.h> #include<string.h> ...
- 网站优化与Cdn文件传输服务
网站优化与Cdn文件传输服务 如今互联网无处不在,其方便快捷.性质和低成本的经济特点,已经逐渐成为商务贸易.信息分发和数据交付的一个重要渠道.要想让数据的分发带来巨大的效益,那么网民的满意是唯一的办法 ...
- ios socket通讯注意事项
前段时间,在做objetive-c下的Sokcet通讯,当使用C++程序做服务端时,一切正常;当用JAVA做服务端时,双方收不到数据,在查阅了一些资料后,整理一下注意点 1 消息末尾加回车和换行符 o ...
- 如何注册dll、ocx控件
在程序集成时,有时需要对厂家提供的dll或者ocx控件进行注册.其一般操作为:开始>命令指示符(右击管理员身份运行)>regsvr32 文件路径. 比如对devocx.ocx进行注册,在F ...
- Windows - 子系统(subsystem)错误
Windows - 子系统(subsystem)错误 本文地址: http://blog.csdn.net/caroline_wendy VS2012生成错误: "error LNK2019 ...
- winform清空DataGridView中的数据 分类: DataGridView 2014-05-19 20:56 180人阅读 评论(0) 收藏
我们一般要把dgv情况,一般用: DataTable dt = (DataTable)dgvData.DataSource; dt.Rows.Clear(); dgvData.DataSource = ...
- spring security +spring boot 自定义 403 页面
用的spring security 做的权限控制, 当 访问没有权限, 跳转 会跳到默认403 页面.不符合当前项目需求. 一下是解决方式: package com.ycmedia; import ...
- eclipse编辑器,怎么创建PHP和JAVA的工程项目?
eclipse编辑器,怎么创建PHP和JAVA的工程项目.强大的eclipse,编写php或者java由你选择!!! 我为什么这么说? 我是新手,写下这篇文章,可能对新手会有一点点的帮助而已,然后为了 ...