UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)



UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)_第1张图片UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)_第2张图片


思路:题目要求求出边权值的最大值和最小值的差值,该差值是最小的。最小生成树,Kruskal算法和Prim算法其中Kruskal算法中的贪心策略,将边权从小到大排列,因此用Kruskal算法来求解。在生成最小生成树的时候,在范围[L,R]中,其中L是最小边权,将求权值的和改为求w[L]-w[R],然后一次更新L的值,遍历所有的情况,更新最小值即可。

注:其中给出的结点的编号是从1开始的,所以并查集的下标要从1-n都更新。


/*
*Kruskal算法(最小生成树) 
*/
#include
#include
#define N 10010
#define INF 999999999
using namespace std;
int u[N],v[N],w[N],p[N],r[N];
int n,m;
bool cmp(int i,int j){return w[i]



你可能感兴趣的:(UVa,图论,-,生成树,竞赛常用算法题目解析,kruskal,并查集,最小生成树)