帮忙看看哪里有问题
  • 板块P1536 村村通
  • 楼主ayst0001
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/8 15:50
  • 上次更新2024/7/8 17:00:11
查看原帖
帮忙看看哪里有问题
728741
ayst0001楼主2024/7/8 15:50
#include<bits/stdc++.h>
using namespace std;
int n=1,m;
int fa[1010];
int f[1010];
int find(int x){
	if(fa[x]==x) return x;
	else{
		fa[x]=find(x);
		return fa[x];
	}
}
int main( ){
	while(n!=0){
		cin>>n>>m;
		if(m==0){
			cout<<n-1;
		}
		for(int i=1;i<=n;i++){
			fa[i]=i;
		}
		for(int i=1;i<=m;i++){
			int q,w;
			cin>>q>>w;
			if(find(q)==find(w)) fa[q]=find(w);
			else fa[find(q)]=find(w);
		}
		int t=1;
		int ans=0;
		for(int i=1;i<=n;i++){
			bool g=true;
			for(int i=1;i<=t;i++){
				if(find(i)==f[i]){
					g=false;	
				}
			}
			if(g==true){
				f[t]=find(i);
				t++;
				ans++;
			}
		}
		cout<<ans<<endl;
	}
	
	
	
	
	
	return 0;
}
2024/7/8 15:50
加载中...