给定一个 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外,均保证原图的最小生成树唯一。
云南编程挑战赛