是什么:
- 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。
kruskal算法:
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
struct node {
int x,y,t;
};
int n,m,fa[100001];
int mincost;
bool cmp(node a,node b) {
return a.t<b.t;
}
int find(int x) {
if(fa[x]==x) return x;
else return find(fa[x]);
}
int main() {
while(cin>>n) {
if(n==0) return 0;
mincost=0;
memset(fa,0,sizeof(fa));
vector<node> g;
cin>>m;
for(int i=1; i<=n; i++) fa[i]=i;
int x,y,t;
for(int i=1; i<=m; i++) {
cin>>x>>y>>t;
g.push_back((node) {
x,y,t});
}
sort(g.begin(),g.end(),cmp);
for(int i=</