BZOJ_2622_[2012国家集训队测试]深入虎穴_最短路
BZOJ_2622_[2012国家集训队测试]深入虎穴_最短路
Description
虎是中国传统文化中一个独特的意象。我们既会把老虎的形象用到喜庆的节日装饰画上,也可能把它视作一种邪恶的可怕的动物,例如“武松打虎”或者“三人成虎”。“不入虎穴焉得虎子”是一个对虎的威猛的形象的极好体现,而小强确偏偏进入了虎穴,但问题是怎么出来。
有一个复杂的虎穴包括了N个节点(编号为0至N-1)和M条无向的通道,其中通道i(0<=i<M)连接两个节点R[i][0]和R[i][1],长为L[i]。有K个出口节点,分别为P[0],
P[1]至P[K-1]。小强从0号节点出发,他想尽快到达一个出口节点。而洞穴中有一只会瞬间移动的老虎。小强每次到达一个节点,老虎就会瞬间移动到与这个节点相邻的某个通道里使得小强无法使用这个通道。不过,小强一旦选择了另一个没有被封锁的通道,老虎就不会在小强到达这个通道的目的地前改变位置。
老虎非常聪明,它总能让小强离开洞穴所要消耗的时间最长。而小强也非常聪明,他能够计算出最快的逃生方案。
为了让题目更加严谨,我们规定小强的逃生方案是如下的形式:对于每个节点X,给它的所有相邻的边<X,Y>指定一个权值f(X,Y),注意,f(X,Y)不等于f(Y,X);在一个节点,小强选择未被封锁的权值最大的通道逃生,直到到达出口。所有的f(X,Y)两两不同。
你要计算小强的最快逃离时间T并输出。
Input
第一行三个整数 N M K
接下来M行 每行三个整数 表示一条无向边的两端和长度(无重边)
接下来K个整数 表示出口洞穴
输入直接保留这个就行
Output
Sample Input
0 1 1
0 2 4
0 3 11
1 4 11
1 5 7
1 6 15
2 7 3
2 8 13
2 9 23
3 10 3
3 11 1
3 12 2
4 5 6 7 8 9 10 11 12
Sample Output
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;
#define N 100050
#define M 1000050
#define mr(x,y) make_pair(x,y)
inline char nc() {
static char buf[100000],*p1,*p2;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int rd() {
register int x=0;
register char s=nc();
while(s<'0'||s>'9')s=nc();
while(s>='0'&&s<='9')x=(x<<3)+(x<<1)+s-'0',s=nc();
return x;
}
int head[N],to[M<<1],nxt[M<<1],val[M<<1],cnt,n,m;
int f[N],k,g[N],vis[N];
priority_queue<pair<int,int> >q;
inline void add(int u,int v,int w) {
to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt; val[cnt]=w;
}
void dij() {
int i;
while(!q.empty()) {
int x=q.top().second;
q.pop();
if(vis[x]) continue;
vis[x]=1;
for(i=head[x];i;i=nxt[i]) {
if(f[to[i]]>=g[x]+val[i]) {
g[to[i]]=f[to[i]];
f[to[i]]=g[x]+val[i];
q.push(make_pair(-g[to[i]],to[i]));
}else if(g[to[i]]>g[x]+val[i]) {
g[to[i]]=g[x]+val[i];
q.push(make_pair(-g[to[i]],to[i]));
}
}
}
}
int main() {
// freopen("tiger.in","r",stdin); freopen("tiger.out","w",stdout);
n=rd(); m=rd(); k=rd();
int i,x,y,z;
for(i=1;i<=m;i++) {
x=rd(); y=rd(); z=rd();
x++,y++;
add(x,y,z),add(y,x,z);
}
memset(f,0x3f,sizeof(f));
memset(g,0x3f,sizeof(g));
for(i=1;i<=k;i++) {
x=rd();
f[x+1]=g[x+1]=0;
q.push(make_pair(0,x+1));
}
dij();
printf("%d\n",g[1]); return 0;
}
BZOJ_2622_[2012国家集训队测试]深入虎穴_最短路的更多相关文章
- 【BZOJ2622】[2012国家集训队测试]深入虎穴 次短路
[BZOJ2622][2012国家集训队测试]深入虎穴 Description 虎是中国传统文化中一个独特的意象.我们既会把老虎的形象用到喜庆的节日装饰画上,也可能把它视作一种邪恶的可怕的动物,例如“ ...
- 【BZOJ2622】[2012国家集训队测试]深入虎穴
虎是中国传统文化中一个独特的意象.我们既会把老虎的形象用到喜庆的节日装饰画上,也可能把它视作一种邪恶的可怕的动物,例如“武松打虎”或者“三人成虎”.“不入虎穴焉得虎子”是一个对虎的威猛的形象的极好体现 ...
- BZOJ5120 [2017国家集训队测试]无限之环 费用流
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5120 题意概括 原题挺简略的. 题解 本题好难. 听了任轩笛大佬<国家队神犇>的讲课才 ...
- bzoj 2563 [2012国家集训队Round 1 day2] 阿狸和桃子的游戏 贪心
正解:贪心 解题报告: 链接在这儿! 知道解法之后会jio的好像很简单的样子……其实挺难想到的QAQ 不过大佬讲了方法之后还是懂了 有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的, ...
- bzoj 5120 [2017国家集训队测试]无限之环——网络流
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 旋转的话相当于去掉一个插头.新增一个插头,所以在这两个插头之间连边并带上费用即可. 网 ...
- [BZOJ5120] [2017国家集训队测试]无限之环
Description 曾经有一款流行的游戏,叫做InfinityLoop,先来简单的介绍一下这个游戏: 游戏在一个n×m的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在方格某些方向的边界的中 ...
- BZOJ2654/COGS1764 [2012国家集训队]tree(陈立杰) [生成树,二分]
BZOJ传送门,COGS传送门 tree Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V, ...
- bzoj 5120: [2017国家集训队测试]无限之环【最小费用最大流】
玄妙的建图-- 这种平衡度数的题按套路是先黑白染色然后分别连ST点,相邻格子连黑向白连费用1流量0的边,然后考虑费用怎么表示 把一个点拆成五个,上下左右中,中间点黑白染色连ST, 对于连S的点,中点连 ...
- 洛谷P1297 [国家集训队]单选错位_数学期望
考虑第 iii 位, 那么当前共有 a[i]a[i]a[i] 种选项,那么当前选项正确的情况就是下一个被误填的答案与当前答案相同.换句话说,当前答案一共有 a[i]a[i]a[i] 种可能,而下一个答 ...
随机推荐
- javascript学习(二)javascript常见问题总结
在js使用过程中,经常会碰到一些问题,本人利用闲暇时间整理了一些常见问题的解决方法,贴出来和大家分享,有需要的朋友可以参考下 1.JS中方法和变量都是区分大小写的 2.单引号.双引号在JS中没有特殊 ...
- 2MySQL Server 系统架构
2.2MySQL Server 系统架构 总的来说,MySQL 可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL 数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限 ...
- 【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
实例:1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STRING'] = "";$_SERVER['RE ...
- git push 报错 "Peer certificate cannot be authenticated with known CA certificates"
使用git push -u origin master 命令向远程仓库提交代码时报错:Peer certificate cannot be authenticated with known CA ce ...
- 移动端h5实现复制功能
首先遇到这个需求是就各种百度,但是发现基本都是用js实现,而且兼容性还非常不好. 但是在寻觅和尝试的过程中,发现只需要css代码也可以完全实现的,对需要复制内容的标签加上下面这几行代码就可以了. -w ...
- -bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory
问题: 偶然使用 windows 进行编写脚本.使用 wsl (windows subsystem for linux) 进行运行的时候,什么事情没有.但是当把脚本移植到远程服务器进行运行的时候,发现 ...
- CSS定位使用方法
.box0 { width: 200px; height: 200px; position: relative; background: #cfa } .box0-1,.box0-2 { width: ...
- Oracle数据库表分区
一.Oracle数据库表分区概念和理解 1.1.已经存在的表没有方法可以直接转化为分区表. 1.2.不在分区字段上建立分区索引,在别的字段上建立索引相当于全局索引.效率 ...
- 基于Kafka Connect框架DataPipeline在实时数据集成上做了哪些提升?
在不断满足当前企业客户数据集成需求的同时,DataPipeline也基于Kafka Connect 框架做了很多非常重要的提升. 1. 系统架构层面. DataPipeline引入DataPipeli ...
- 网络编程之select
一.select函数简介 select一般用在socket网络编程中,在网络编程的过程中,经常会遇到许多阻塞的函数,网络编程时使用的recv, recvfrom.connect函数都是阻塞的函数,当函 ...