#Y1004. [YUNOI2024] 和解

[YUNOI2024] 和解

2027202722 班何其远在出题人面前关上带密码的门浪费出题人宝贵的 1010 秒,在此谴责。

题目背景

“我原本一直无法接受父亲,直到我做了一个梦。梦见我和我的父亲在草原上骑马。我和父亲骑在同一匹马上,那个画面很温馨,我是抱着父亲的。醒来后,我和我的父亲和解了,我和我的儿子也和解了,我和我自己也和解了...”

题目描述

yuno 看到了忠哥做的梦,作为一个善良(杀点人就不善良了吗)的女孩子,她想让忠哥早点和父亲和解(别问我为什么不用未来日记)。她发现,只要忠哥和他的父亲骑马从草原到波士顿,就可以和解。于是她决定帮助忠哥规划路线。

mm 个驿站,驿站之间有 pp 条道路相连,从一个驿站 xx 到另一个驿站 yy 花费的时间 TT 等于 dis(x,y)v\cfrac{dis(x,y)}{v},其中 vv 表示马的速度。

父亲有 nn 匹马第 ii 匹马的速度为 viv_i,因为 yuno 想要每次骑的马不同,以增加父子的新鲜感(可以认为其中的驿站是旷野之息中的驿站),所以在每一个驿站都有 nn 匹相同的马,且每个驿站的马是共用的,当一个驿站中取走某一匹马 aa 后,其他驿站中的马 aa 也会消失。

求从 nn11 所需要的最短时间以及路径。如果无法到达,则输出 ImpossibleImpossible

输入格式

从文件 compromise.incompromise.in 中读入数据。

第一行有三个整数 n,m,pn,m,p,分别表示马的数量,驿站个数,道路条数。

第二行有 nn 个整数 viv_i,表示第 ii 匹马的速度。

接下来 pp 行,每行三个整数 x,y,dx,y,d,表示 xx 驿站和 yy 驿站间有一条长度为 dd 的路。

输出格式

输出到文件 compromise.outcompromise.out 中。

如果有路径,输出共两行,第一行一个实数 TT 表示最短时间,输出保留 22 位小数。

第二行有若干各整数,之间用空格隔开,表示路径。

如果没有合法路径,则输出 ImpossibleImpossible

数据保证最多只有一条合法路径。

样例 #1

样例输入 #1

3 4 3
3 1 2
1 2 10
2 3 30
3 4 20

样例输出 #1

30.00
4 3 2 1

提示

对于 30%30\% 的数据,1n,m51\le n,m \le 5

对于 100%100\% 的数据,1n171\le n \le 172m302\le m \le 301vi1001\le v_i \le 1001di100001\le d_i \le 10000 无重边。