一篇题解
2025-08-14 17:52:51
发布于:陕西
4阅读
0回复
0点赞
建议先去写亲戚,这个入门标的……
肯定不靠谱
我们搓一颗并查集
完了
吗?
记得cnt-1;
#include<bits/stdc++.h>
using namespace std;
const int maxn=1001;
int n,m,fa[maxn];
int find(int a){
if(fa[a]==a)return a;
else return fa[a]=find(fa[a]);
}
void unionn(int a,int b){
int x=find(a);
int y=find(b);
if(x!=y) fa[x]=y;
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
while(cin>>n&&n){
cin>>m;
for(int i=1;i<=n;i++){
fa[i]=i;
}
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
unionn(u,v);
}
int cnt=0;
for(int i=1;i<=n;i++){
if(fa[i]==i){
cnt++;
}
}
cout<<cnt-1<<endl;
}
return 0;
}
全部评论 1
比楼上更好看些
1周前 来自 陕西
0
有帮助,赞一个