无向图的最小生成树之Kruskal算法

N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。

Input第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000) 
第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值。(1 <= S, E <= N,1 <= W <= 10000)Output输出最小生成树的所有边的权值之和。Sample Input

9 14
1 2 4
2 3 8
3 4 7
4 5 9
5 6 10
6 7 2
7 8 1
8 9 7
2 8 11
3 9 2
7 9 6
3 6 4
4 6 14
1 8 8

Sample Output

37

 

#include
using namespace std;
#define maxn 50005
#define INF 0x3f3f3f3f
int par[maxn],rank[maxn];
struct edge//边的信息 
{
	int u,v,cost;
}es[maxn];
bool cmp(edge a,edge b)
{
	return a.cost

 

 

 

你可能感兴趣的:(图论--最小生成树)