9487 - 最小生成树(tree)

给定一个 n 个点,m 条边的简单无向连通图。我们想要知道,对于每条边,在其他最多只有一条边的权值可变为任意值的情况下,我们可以调整的它的权值,能够使得它一定在图的所有最小生成树之中,求我们可以设置这个边的权值的最大值。

输入

从文件tree.in中读入数据。第一行包含2个数字n、m。 接着m行,每行3个数字u、v、w,表示u和v之间有一条权值为w的边。

输出

输出到文件tree.out中。输出m个数字,第i个数字对应输入的第i个边,为这个边允许的最大权值,如果任意值都可以,那么改为输出-1。

样例

输入

4 6
3 2 9
2 4 15
1 2 8
1 3 5
3 4 4
1 4 14

输出

4 4 4 3 4 3

输入

5 4
2 1 24
5 1 6
1 3 11
4 1 13

输出

-1 -1 -1 -1

提示

【样例1解释】 图如下所示,每条边允许的最大权值分别是4、4、4、3、4、3。

对于第1条边u=3,v=2,w=9来说,权值改为4后,不论我们怎么修改一条边的权值,都是最小生成树的边。如果我们把权值改为5,虽然此时只有唯一的最小生成树,但是如果变化u=1,v=2,w=8的边的权值为1,此时最小生成树有不同的两种,不能保证这条边,一定在最小生成树中

对于第二条边u=2,v=4,w=15来说,权值改为4后,不论我们怎么修改一条边的权值,都是最小生成树的边。如果我们把权值改为5,如果变化u=1,v=2,w=8的边的权值为1,此时最小生成树有不同的两种,不能保证这条边,一定在最小生成树中。

对于第3条边u=1,v=2,w=8来说,权值改为4后,不论我们怎么修改一条边的权值,都是最小生成树的边。如果我们把权值改为5,如果变化u=2,v=4,w=15的边的权值为1,此时最小生成树有不同的两种,不能保证这条边一定在最小生成树中。

对于第4条边u=1,v=3,w=5来说,权值改为3后,不论我们怎么修改一条边的权值,都是最小生成树的边。如果我们把权值改为4,如果变化u=1,v=4,w=14的边的权值为1,此时最小生成树有不同的两种,不能保证这条边一定在最小生成树中。

【样例2解释】 输入的图正好是一棵树,所以任意设置边的权值,这些边永远都在最小生成树中。

对于所有测试数据有:1 ≤ n ≤ 2×10^5,n-1 ≤ m ≤2×10^5,1 ≤ w < 10^9。保证图中没有重边和自环。保证所有点之间互相连通。除特殊性质B外,均保证原图的最小生成树唯一。

来源

云南编程挑战赛

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题