luogu#P8914. [DMOI-R2] 梦境

[DMOI-R2] 梦境

题目背景

小 A 做噩梦了。

题目描述

小 A 的梦境可以看做有 nn 个点,mm 条边的无向图。小 A 在图上的点 SS,有一个怪物在点 BB,安全屋在点 FF

怪物正在追杀小 A,现在小 A 需要逃到安全屋。小 A 意识到这是在自己的梦境里,所以他在一定程度上操控了梦境。他把怪物的移动速度设置成了 33,但代价是自己的移动速度被设置成 22

小 A 始终会沿着到 FF 的最短路走,如果有多条最短路,则小 A 会选择使得经过点的编号所顺次构成序列的字典序最小的那条最短路,因为他觉得这样走最不容易被怪物抓到。

而怪物在梦境中游荡,会随机向自身周围的点移动,且怪物已经访问过的点不会重复访问。

现在小 A 需要知道在最坏情况下他能否安全到达安全屋,或者何时被怪物抓住。

输入格式

第一行五个整数 n,m,S,B,Fn,m,S,B,F

接下来 mm 行,第 ii 行三个整数 ui,vi,wiu_i,v_i,w_i,代表 ui,viu_i,v_i 之间有一条长度为 wiw_i 的无向边。

输出格式

两行。

如果小 A 在最坏情况下能够安全到达安全屋,输出 YES,接下来一行输出小 A 到达安全屋后怪物到安全屋的距离。

如果小 A 在最坏情况下不能安全到达安全屋,输出 NO,接下来一行输出小 A 在何时被怪物抓到。

若第二行的答案为整数则输出整数,否则输出小数

4 3 1 2 3
1 3 1
2 4 2
4 3 1
YES
1.5
4 3 1 2 3
1 3 2
2 4 2
4 3 1
NO
1

提示

关于最坏情况的解释:怪物的走法可能有多种。也就是说,你需要同时考虑怪物的每种走法,只要怪物的某种最短路走法可以抓到小 A 时答案即为 NO。而最坏情况是指怪物的走法在所有走法中能够最快抓到(或接近)小 A 的情况。

另外本题没有 special judge,也就是说如果答案是整数,你需要严格输出整数答案,不带小数点。同时数据保证不存在小数位数超过两位的答案。

数据范围

本题采用捆绑测试。

$$\def{\arraystretch}{1.5} \begin{array}{c|c|c|c|c}\hline \textbf{~~Subtask~~}&\bm{~~n \le ~~}&\bm{~~~~m \le~~~~}& ~\textbf{~~特殊性质~~}~&\textbf{~~分值~~}\cr\hline 0 &10 &20 & &10\cr\hline 1 &500 &1000 & &10\cr\hline 2 &800 &2000 & &10\cr\hline 3 &2\times10^5& &\text{A+B}&15 \cr\hline 4 &2\times10^5& &\text{A}&15 \cr\hline 5 &10^5 &2\times10^5& &20\cr\hline 6 &2\times10^5&2\times10^5& &20 \end{array} $$

特殊性质 A\text{A}m=n1m=n-1

特殊性质 B\text{B}:对于给定的每个 viv_i,满足 vi=ui+1v_i=u_i+1

对于 100%100\% 的数据,保证 SBFS \ne B \ne F1S,B,Fn1 \le S,B,F \le n1wi1031 \le w_i \le 10^3,图连通且不存在重边。

特殊评分方式

本题开启子任务依赖,具体如下:

  • 对于子任务 i{0,3}i\in\{0,3\},您只需答对子任务 ii 即可获得子任务 ii 的分数。
  • 对于子任务 44,您需要答对子任务 33 才能获得子任务 44 的分数。
  • 对于子任务 i{1,2,5,6}i\in\{1,2,5,6\},您需要答对子任务 00 才能获得子任务 ii 的分数。

附件说明

对于赛时许多选手卡在了 sub3,此处提供一组 sub3 内的数据用于检查并改正代码。