【题目描述】
L因为业务繁忙,经常会到处出差。因为他是航空公司的优质客户,于是某个航空公司给了他一个优惠券。
他可以利用这个优惠券在任何一个国家内的任意城市间免费旅行,当他的路线跨国才会产生费用。L有一个航空公司的价格表与航线。而且每个城市出发都能到所有的城市,2个城市间可能有不止一个航班,一个国家内的2个城市间一定有不同的路线,但是不同国家的城市间只有一条路线。L想知道从每个城市出发到产生费用最多的城市,不过你不能重复在一个航班上飞来飞去产生费用,必须沿最少的费用路线飞行。
【输入格式】
第一行,两个整数 N,M,表示N 个城市, M 条航线。
接下来 M 行,每行三个整数 a,b,c,表示城市 a,b 之间有一条费用为 c 的航线。
【输出格式】
共 N 行,第 i 行为从城市 i 出发到达每个城市额外费用的最大值。
【样例输入】
6 6
1 4 2
1 2 6
2 5 3
2 3 7
6 3 4
3 1 8
【样例输出】
4
4
4
6
7
7
【备注】
对于 40%的数据 1<=N<=1000,1<=M<=1000
对于 100%的数据 1<=N<=20000,1<=M<=200000
【题目分析】
首先,由于同一国家的城市之间并不需要花费,所以联想到tarjan缩点还是很容易的。
缩点完成后,根据国家与国家之间的航班建立一张图,由于题上说了不同国家的城市间只有一条路线,所以