物语(monogatari)
\(Description\)
某一天,少年邂逅了同病相连的IA。见面后,IA一把牵起少年的手,决定和他一起逃离部落,离开这个无法容身的是非之地。
要逃离部落,少年和IA就需要先选择一条耗时最少的路线,从而避免被部落的大人们抓到。部落可以大致分为N个区域,少年和IA在区域1,部落的出口设在区域N。此外部落还有M条连接两个区域道路。道路是无向的,没有一条道路的两端连接相同的区域,也没有两条道路所连接的两个区域完全相同。对于其中前(M−1)条道路,其通过时间是确定的,但最后一条道路,由于地理因素,通过其的时间会不断变化。
现在,少年和IA得知了在K个不同的时段里,通过第M条道路的时间,请您分别计算出在这K 个时段中逃离部落的最少时间,以帮助他们确定行动的时刻。
\(Input\)
第一行三个整数N,M,K,分别表示区域数,道路数,询问数。
接下来M−1行每行三个整数 \(ui,vi,wi(ui≠vi,1≤ui,vi≤N,0<wi≤10^9)\),表示这条道路连接的区域和通过时间。
紧接着是两个整数 \(ui,vi(ui≠vi,1≤ui,vi≤N)\),表示第M条道路连接的区域。
最后K行,每行一个正整数 \(xi(0<xi≤10^9)\),表示目前第M条道路的通过时间。
\(Output\)
输出共计K行,每行一个整数,表示对应时段逃离部落的最短时间。如果在该时段内无法逃离,输出“+Inf”。
\(Sample Input\)
输入1:
4 5 4
1 2 7
1 3 4
2 4 3
3 4 6
2 3
1
2
4
6
输入2:
4 3 1
1 2 7
1 3 4
2 3
9
\(Sample Output\)
输出1:
8
9
10
10
输出2:
+Inf

Hint

代码(常数巨大,不得不开O)
#pragma GCC optimize(2)
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
typedef long long LL;
const int N = 200000 , M = 500000;
const LL INF = 1e16 + 10;
int n , m , k , h[N + 5] , vis[N + 5] , tot = 1 , u , v;
LL dis1[N + 5] , disu[N + 5] , disv[N + 5] , ans , w;
struct edge{
int to , nxt;
LL w;
}e[(M << 1) + 5];
struct node{
int id;
LL d;
bool operator < (node c) const
{
return d > c.d;
}
};
inline void add(int u , int v , int w)
{
e[++tot].to = v , e[tot].w = w , e[tot].nxt = h[u] , h[u] = tot;
}
inline LL Min(LL x , LL y) { return x < y ? x : y; };
priority_queue<node> q;
inline void dij1()
{
memset(vis , 0 , sizeof(vis));
dis1[1] = 0;
q.push((node){1 , 0});
while (!q.empty())
{
node x = q.top();
q.pop();
if (vis[x.id]) continue;
vis[x.id] = 1;
for(register int i = h[x.id]; i; i = e[i].nxt)
{
if (dis1[x.id] + e[i].w < dis1[e[i].to])
{
dis1[e[i].to] = dis1[x.id] + e[i].w;
q.push((node){e[i].to , dis1[e[i].to]});
}
}
}
}
priority_queue<node> Q;
inline void diju()
{
memset(vis , 0 , sizeof(vis));
disu[u] = 0;
Q.push((node){u , 0});
while (!Q.empty())
{
node x = Q.top();
Q.pop();
if (vis[x.id]) continue;
vis[x.id] = 1;
for(register int i = h[x.id]; i; i = e[i].nxt)
{
if (disu[x.id] + e[i].w < disu[e[i].to])
{
disu[e[i].to] = disu[x.id] + e[i].w;
Q.push((node){e[i].to , disu[e[i].to]});
}
}
}
}
priority_queue<node> QQ;
inline void dijv()
{
memset(vis , 0 , sizeof(vis));
disv[v] = 0;
QQ.push((node){v , 0});
while (!QQ.empty())
{
node x = QQ.top();
QQ.pop();
if (vis[x.id]) continue;
vis[x.id] = 1;
for(register int i = h[x.id]; i; i = e[i].nxt)
{
if (disv[x.id] + e[i].w < disv[e[i].to])
{
disv[e[i].to] = disv[x.id] + e[i].w;
QQ.push((node){e[i].to , disv[e[i].to]});
}
}
}
}
int main()
{
freopen("monogatari.in" , "r" , stdin);
freopen("monogatari.out" , "w" , stdout);
scanf("%d%d%d" , &n , &m , &k);
for(register int i = 1; i < m; i++)
{
scanf("%d%d%lld" , &u , &v , &w);
add(u , v , w) , add(v , u , w);
}
for(register int i = 1; i <= n; i++)
dis1[i] = INF , disu[i] = INF , disv[i] = INF;
scanf("%d%d" , &u , &v);
dij1() , diju() , dijv();
for(register int i = 1; i <= k; i++)
{
scanf("%lld" , &w);
ans = dis1[n];
if (dis1[u] != INF && disv[n] != INF) ans = Min(ans , dis1[u] + w + disv[n]);
if (dis1[v] != INF && disu[n] != INF) ans = Min(ans , dis1[v] + w + disu[n]);
if (ans == INF) printf("+Inf\n");
else printf("%lld\n" , ans);
}
}
物语(monogatari)的更多相关文章
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Su ...
- 怪奇物语第二季/全集Stranger Things迅雷下载
Netflix的叫好叫座剧<怪奇物语 Stranger Things>第二季更新上线日期为美国时间10月27日,第二季讲述在1984年(相隔上季一年),印第安纳州的Hawkins镇市民仍然 ...
- 2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
秋实大哥の恋爱物语 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 De ...
- cdoj1091-秋实大哥の恋爱物语 【kmp】
http://acm.uestc.edu.cn/#/problem/show/1091 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others) Memo ...
- FZU 2234 牧场物语【多线程dp】
Problem 2234 牧场物语 Problem Description 小茗同学正在玩牧场物语.该游戏的地图可看成一个边长为n的正方形. 小茗同学突然心血来潮要去砍树,然而,斧头在小茗的右下方 ...
- FZU2234 牧场物语 DP
题意:先去再回,不能吃重复的,获取最大值 分析:等价于两个人同时去,不能吃重复的 定义dp[i][j][k]表示从起点走k步,第一个人的横坐标是i,第二个人的横坐标是j的最最大值 这个题和bc上一个回 ...
- 星座物语APP
效果图: 这里的后台管理用的是duducat,大家可以去百度看说明.图片,文字都在duducat后台服务器上,可以自己修改的.(PS:图片这里是随便找的) http://www.duducat.com ...
- 一步一步搞懂支持向量机——从牧场物语到SVM(上)
之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服&quo ...
- NOIP2016——大家一起实现の物语
由于最近硬盘挂了,换了个固态硬盘,比赛结束后四天一直在装Linux,所以最近一直没怎么更新 看起来挺漂亮的 比赛前一个月申请停了一个月晚自习,在我们这座城市里能做到这种事情已经可以被称为奇迹了,并且在 ...
- 荒木毬菜 小情歌日文版 - 独身OL之歌
咎(とが)めるつもりもないけどtogameru tumorimo naikedo并不想责备在身旁 暇(ひま)してる时间(じかん)をhimashiteru jikan wo无所事事的时间 パジャマの鸟( ...
随机推荐
- MISC中的图片修改宽高问题
在做CTF中MISC分类题目时,很常见的一个问题就是修改图片正确的宽与高 (此篇笔记中的内容以ctfshow中MISC入门分类为切入点,感兴趣的同学可以一边做一边有不会的看看,仅供参考,我是菜鸡) 曾 ...
- 【每日一题】【list转int数组】【Lambda的简化-方法引用】2022年1月15日-NC45 实现二叉树先序,中序和后序遍历
描述 给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点. 数据范围:0 \le n \le 10000≤n≤1000,树上每个节点的val值满足 0 \le val \le 1000≤ ...
- K8s 超详细总结
一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...
- Hexo博客搭建和简单部署
title: Hexo博客搭建和简单部署 date: 2020-03-02 12:00:00 categories: - [IT,博客] - [IT,软件,程序] - [IT,软件,搭建与配置] ta ...
- 想做长期的 AB 实验?快来看看这些坑你踩了没
作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广. 长期实验即运行时间达数 ...
- uniapp微信小程序 下拉刷新(上拉请求下一页数据)
<template>标签中: <view class="" v-if="daShow==1"> <view class=" ...
- [图像处理] YUV图像处理入门1
目前数字图像处理技术已经应用生活各个方面,但是大部分教程都是利用第三方库(如opencv)对RGB图像格式进行处理.对于YUV图像格式的图像处理教程较少.于是博主搬运总结了多个大牛的文章,总结出来这个 ...
- [OpenCV实战]2 人脸识别算法对比
在本教程中,我们将讨论各种人脸检测方法,并对各种方法进行比较.下面是主要的人脸检测方法: 1 OpenCV中的Haar Cascade人脸分类器: 2 OpenCV中的深度学习人脸分类器: 3 Dli ...
- [OpenCV实战]4 OpenCV中的颜色空间
目录 1 不同的色彩空间 1.1RGB颜色空间 1.2 Lab色彩空间 1.3 YCrCb颜色空间 1.4 HSV颜色空间 2 如何使用这些颜色空间进行分割 2.1 获取特定颜色的颜色值 2.2 应 ...
- Java中Elasticsearch 实现分页方式(三种方式)
目录 ES 简介 ES 的特点: 一.from + size 浅分页 二.scroll 深分页 scroll删除 三.search_after 深分页 ES 简介 Elasticsearch 是一个基 ...