Problem
【SHOI2010】最小生成树
Time Limit:
Memory Limit:
Description
最近对最小生成树问题特别感兴趣。他已经知道如果要去求出一个个点、条边的无向图的最小生成树有一个算法和另一个的算法。另外,他还知道,某一个图可能有多种不同的最小生成树。例如,下面图 中所示的都是图 中的无向图的最小生成树:
当然啦,这些都不是今天需要你解决的问题。想知道对于某一条无向图中的边,至少需要多少代价可以保证边在这个无向图的最小生成树中。为了使得边一定在最小生成树中,你可以对这个无向图进行操作,一次单独的操作是指:先选择一条图中的边 ,再把图中除了这条边以外的边,每一条的权值都减少。如图 所示就是一次这样的操作:
Input
输入文件的第一行有个正整数、、分别表示无向图中的点数、边数、必须要在最小生成树中出现的边的标号。
接下来行依次描述标号为的无向边,每行描述一条边。每个描述包含个整数、、,表示这条边连接着标号为、的点,且这条边的权值为。
输入文件保证,,且输入数据保证这个无向图一定是一个连通图。
Output
输出文件只有一行,这行只有一个整数,即,使得标号为边一定出现最小生成树中的最少操作次数。
Sample Input
1 | 4 6 1 |
Sample Output
1 | 1 |
HINT
样例就是问题描述中的例子。
1\le n\le 500, 1\le M\le 800,1\le D<10^6$
标签:最小割
Solution
设边连接,以为源,为汇,断开边,形成一个网络流图。对于此图中的任意一个割,若此割上的所有边边权均大于边边权,则边必在中。
于是把每条边边权变为“改变到使此边边权大于边边权的代价”,即,然后跑最小割即可。
Code?
1 |
|