```cpp
void kruskal()
{
int ans=0,cnt=0;//cnt记录加入的点数
for(int i=1;i<=n;i++) father[i]=i;
sort(edge+1,edge+1+m,com);
for(int i=1;i<=m;i++)
{
int fx=find(edge[i].u);
int fy=find(edge[i].v);
if(fx!=fy)
{
ans+=edge[i].w;
father[fx]=fy;
cnt++;
if(cnt==n-1) break;
}
}
if(cnt==n-1) printf("%d\n",ans);
else printf("orz");//如果cnt!=n-1 意味着有点不连通
}
```
by Cagulo @ 2017-06-05 20:09:45
我忘记·特判了然后A了。
by syh0313 @ 2017-07-21 11:15:05