最小生成树从何而来
2024-08-29 12:37:45
发布于:云南
5阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int fa[1005];
int get(int x){
if(x != fa[x]) fa[x] = get(fa[x]);
return fa[x];
}
void merge(int x,int y){fa[get(x)] = get(y);}
int main(){
int n;
while(cin >> n){
if(n == 0) return 0;
int m; cin >> m;
for(int i = 1;i <= n;i++) fa[i] = i;
for(int i = 1;i <= m;i++){
int x,y; cin >> x >> y;
merge(x,y);
}
int cnt = 0;
for(int i = 1;i <= n;i++){
if(get(i) == i) cnt++;
}
cout << cnt - 1 << endl;
}
return 0;
}
全部评论 1
因为他善
2024-08-31 来自 广东
0
有帮助,赞一个