就离谱
  • 板块学术版
  • 楼主noone221_
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/24 11:12
  • 上次更新2023/11/3 07:57:59
查看原帖
就离谱
544354
noone221_楼主2023/7/24 11:12

https://www.luogu.com.cn/record/117150990 代码:

#include<bits/stdc++.h>
using namespace std;
int f[1000010],d[1000010];
int n,m,ans;
inline void init(){
	for(int i=1;i<=n;i++)f[i]=i;
}
int find(int x){
	if(f[x]==x)return x;
	else return f[x]=find(f[x]);
}
inline void merge(int a,int b){
	int ra=find(a),rb=find(b);
	if(ra==rb)return;
	f[ra]=rb;
}
int main(){
	scanf("%d%d",&n,&m);
	init();
	for(int i=0;i<m;i++){
	    getchar();
		int a,b;
		char p;
		scanf("%c%d%d",&p,&a,&b);
		if(p=='F'){
			merge(a,b);
		}
		else {
			if(d[a])merge(d[a],b);
			else d[a]=b;
			if(d[b])merge(d[b],a);
			else d[b]=a;
		}
	}
	for(int i=1;i<=n;i++){
		if(f[i]==i)ans++;
	}
	cout<<ans<<endl;
	return 0;
}

就离谱,本地第一个点可过

2023/7/24 11:12
加载中...