点分治分点
题号:NC245539
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个 n 个点, m 条带权的边的有向图,定义一条简单路径的 low 值为其路径上的边权的最小值,d(u, v) 为从 uv 所有简单路径的最大 low 值。注意,简单路径不能包含两个相同的点,故恒有
对于给定的su1n 输出 d(s, u),如果没有任何一条简单路径则输出 -1

输入描述:

第一行三个正整数 
后面 m 行,每行三个整数 , 分别代表一条从 u_i 连向 v_i,权值为 w_i 的边。注意,可能存在重边和自环。

输出描述:

输出一行,包含n个整数,第i个整数表示d(s,i)的值,如果没有任何一条简单路径则输出 -1
示例1

输入

复制
5 7 1
1 2 3
1 3 4
2 3 5
2 5 1
3 4 1
5 4 3
3 5 9

输出

复制
-1 3 4 3 4