Kruskal算法是根据权来筛选节点,也是采用贪心算法。
/// Kruskal///初始化每个节点为独立的点,他的祖先为自己本身void made(int n) { for(int i=0; i<=n; i++) father[i]=i; ///father[i]存的父亲的编号}///找x这个点的祖先int find(int x) { if(x!=father[x]) father[x]=find(father[x]); return father[x];}///按权的大小排序int cmp(const void *a,const void *b) { tree *aa=(tree *)a; tree *bb=(tree *)b; return aa->val-bb->val;}///参数n为节点个数,m为权的个数bool kru(int n,int m) { int i,j; qsort(p,m,sizeof(p[0]),cmp); ans=0; made(n); int cnt=0; for(i=0;i