我这个代码如果要判`orz`要怎么改

P3366 【模板】最小生成树

检查在同一集合中的有几个点?
by 花园Serena @ 2018-08-23 14:25:25


@[待捕捉蒟蒻QωQ](/space/show?uid=117541) 合并不了 n-1 次就不能形成生成树。 不过这题没有 Orz 的数据。
by Anguei @ 2018-08-23 14:26:28


@[yyfcpp](/space/show?uid=53062) 帮忙改改行么QAQ
by FC是女孩子 @ 2018-08-23 14:27:19


```cpp #include<bits/stdc++.h> using namespace std; int n,m; int fa[5001]; struct rec{ int x,y,z; }edge[200001]; bool operator <(rec a,rec b){ return a.z<b.z; } int getfa(int x){ if(x==fa[x])return x; return fa[x]=getfa(fa[x]); } int ans,sum; int main(){ freopen("Kruskal.in","r",stdin); freopen("Kruskal.out","w",stdout); cin>>n>>m; int i,j,k,x,y,z; for(i=1;i<=m;i++) scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].z); sort(edge+1,edge+m+1); for(i=1;i<=n;i++) fa[i]=i; for(i=1;i<=m;i++){ x=getfa(edge[i].x); y=getfa(edge[i].y); if(x==y) continue; fa[x]=y; sum++;//计数,已连了多少条边 ans+=edge[i].z; } if(sum==n-1) cout<<ans<<endl; else cout<<"orz"<<endl;//不联通 fclose(stdin); fclose(stdout); return 0; } ```
by Kai_Admin @ 2018-08-23 14:33:07


数组好像开小了
by Kai_Admin @ 2018-08-23 14:34:28


只要orz你就行了
by hpbl @ 2018-08-23 14:43:29


@[陈奕舟](/space/show?uid=52487) 谢谢
by FC是女孩子 @ 2018-08-23 14:51:55


|