怎么判断orz啊!蒟蒻求助! orz orz

P3366 【模板】最小生成树

@[杨丶老爹](/user/448965) 并查集 or 算法过程中都可以判断啊
by tribool4_in @ 2021-07-25 21:48:18


```cpp #include<bits/stdc++.h> using namespace std; const int N=5001,M=1e6; int n,m,fa[N],ans,cnt; bool vis[N]; int cnt1=0; struct node{ int x,y,z; }edge[M]; bool cmp(node a,node b) { return a.z<b.z; } int find(int x) { if(x==fa[x]) return x; else return fa[x]=find(fa[x]); } void merge(int x,int y) { int fx=find(x),fy=find(y); fa[fx]=fy; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=m;i++) { cin>>edge[i].x>>edge[i].y>>edge[i].z; } sort(edge+1,edge+1+m,cmp); for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=m;i++) { int x=find(edge[i].x); int y=find(edge[i].y); if(x==y) continue; fa[x]=y; cnt1++; ans+=edge[i].z; if(cnt1 == n-1){ cout << ans << endl; return 0; } } cout<<"orz"<<endl; return 0; } ```
by Jiayn @ 2021-07-25 21:51:41


@[杨丶老爹](/user/448965) 这样子判断 `orz`,就是只要已选择的边为 $n-1$,就输出 $ans$,然后 `return 0;` 如果没有选择到 $n-1$ 条边(没有遇到 `return 0;`,成功运行到了最后),就输出 `orz`
by Jiayn @ 2021-07-25 21:53:50


@[杨丶老爹](/user/448965) 我这里面给你加了个 `cnt1`,表示已选择的边
by Jiayn @ 2021-07-25 21:55:50


@[Jiayn](/user/267122) 妙啊,谢谢大佬
by 杨丶老爹 @ 2021-07-26 07:40:51


@[杨丶老爹](/user/448965) 不用谢awa
by Jiayn @ 2021-07-26 08:35:21


|