完善了一下反而只有36分了,求调
查看原帖
完善了一下反而只有36分了,求调
1475432
func2024楼主2025/7/26 10:45
#include <bits/stdc++.h>
using namespace std;
int n,m;
int fa[1100];
int d[1100];
int st[1100];
int find(int n){
	if(fa[n]==n)return n;
	return fa[n]=find(fa[n]);
}

void hb(int n,int m){
	n=find(n);
	m=find(m);
	if(m!=n){
		fa[m]=n;
	}
}
int main(){
	cin>>n>>m;
	
	
	for(int i=0;i<n;i++){
		fa[i]=i;
		d[i]=-1;
	}
	for(int i=0;i<m;i++){
		string s;
		int o,p;
		cin>>s>>o>>p;
        o--;
        p--;
		if(s=="F"){
			hb(o,p);
		}else{//改动且只改动了这个else里的
			if(d[find(o)]==-1){
				d[find(o)]=find(p);
			}else{
				hb(p,d[find(o)]);
			}
			if(d[find(p)]==-1){
				d[find(p)]=find(o);
			}else{
				hb(o,d[find(p)]);
			}
			
		}
	}
	for(int i=0;i<n;i++){
		st[find(i)]++;
	}
	int ans=0;
	for(int i=0;i<n;i++){
		if(st[i]>0)ans++;
	}
	cout<<ans;
    return 0;
}

2025/7/26 10:45
加载中...