kruscal 模板
/* Kruskal模板 */ struct edge{ int from; int to; int next; int value; bool operator<(const edge a) const{ return value<a.value ; } }; const int inf=0x3f3f3f3f; inline int find(int k){ if(k==f[k]) return k; else return f[k]=find(f[k]); } inline int merge(int a,int b){ if(find(a)!=find(b)) return f[find(a)]=find(b); } inline void Kruskal(){ sort(edge,edge+m); memset(dis,inf,sizeof(dis)); for(int i=1;i<=m;i++){ if(t==n-1) break; int u=edge[i].from ; int v=edge[i].to ; if(find(u)!=find(v)){ merge(u,v); ans+=edge[i].value ; ++t; } } }