3162: Where to sit together

时间限制:1000 ms 内存限制:128 MB
上传者:
提交:6 通过:3

题目描述

众所周知,又是一年毕业季,在彩虹岛-苏黎世联邦理工学院里的好朋友们要着急了,因为大部分可能要面临异地,所以为了珍惜最后的时光他们决定每天都要在同一个地方见面。但是学校为了最大限度的满足同学们的要求而且尽可能为同学们创造遍历,建立了——毕业基友专用地图-这个地图上有 $n$ 个地点(下标从 $1$ 到 $n$ ),$m$ 条有向路,每条路的权值为 $w$ 。好朋友 A 在 $s_1$ 楼,好朋友 B 在 $s_2$ 楼,A 和 B 需要每天都要到同一个地方 e 见面($s_1,s_2,e$ 可以是同一个地点),见一次面需要向学校缴纳费用——max(A经过的路的最大权值,B 经过的路的最大权值)。现在 B 的位置不固定,因为他有好多朋友,所以当 B 的位置分别在 $i$($i\in{1,n}$) 时,总花费的最小值分别是多少?

输入格式

第一行为3个整数 $n$、$m$、$s_1$,分别表示地图上的地点个数,有向路的个数和 A 所处的地点编号

$1\le n,m\le2*10^5$

$1\le s_1,u,v\le n$

$1\le w\le 10^9$

接下来 $m$ 行,每行三个整数 $u$、$v$、$m$ ,表示 $u$ -> $v$ 的权值为 $w$。

保证没有自环和重边 

输出格式

输出共N 行,每行一个数字,第i 行表示B 在编号为i 点时,最小的总花费。如果A 和B 无法到达同一个地点,输出-1.

输入样例 复制

6 9 1
5 4 3
6 3 9
3 2 6
5 1 2
4 6 10
5 3 5
1 5 8
6 4 8
4 2 7

输出样例 复制

0
8
8
8
2
8