Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<algorithm>#include<cstdio>#define maxn 100005#define maxm 1000005int id[maxm],eu[maxm],ev[maxm],ew[maxm],n,m,pnt[maxn];int cmp(const int &i,const int &j){return ew[i]<ew[j];}int find(int x){if(x!=pnt[x])pnt[x]=find(pnt[x]);return pnt[x];}int Kruskal(){int ret=0,i,j,p;for(i=1;i<=n;i++)pnt[i]=i;for(i=0;i<m;i++)id[i]=i;std::sort(id,id+m,cmp);for(p=id[j=0],i=1;i<n;i++){while(find(eu[p])==find(ev[p]))p=id[++j];ret+=ew[p];pnt[pnt[ev[p]]]=pnt[pnt[eu[p]]];}return ret;}int main(){int i,a,b,c;