好哥哥,好姐姐们,One Question<^~^>
查看原帖
好哥哥,好姐姐们,One Question<^~^>
739226
yxans楼主2024/4/25 21:14

rt

下面这份代码在 yc==1yc==1 时为什么必须 merge(p+n,q);merge(q+n,p);merge(p+n,q);merge(q+n,p); 而不能 merge(p,q+n);merge(q,p+n);merge(p,q+n);merge(q,p+n);

#include<bits/stdc++.h>
using namespace std;

#define debug cout<<"YxAns"<<endl
#define int long long
const int YxAns = 5100 ;

int n,m,fa[YxAns],ans;

inline int read(){
	int x;
	scanf("%lld",&x);
	return x;
}

inline int Get_ch(){
	char c;
	cin>>c;
	if(c=='E')  return 1;
	return 0;
}

inline int Get_Fa(int u){
	if(fa[u]==u)  return fa[u];
	return fa[u]=Get_Fa(fa[u]);
}

inline void Merge(int u,int v){
	int Fu=Get_Fa(u),Fv=Get_Fa(v);
	if(Fu==Fv)  return ;
	fa[Fu]=Fv;		 
}

signed main(){
	n=read();m=read();
	for(int i=1;i<=2*n;i++)
		fa[i]=i;
	for(int i=1,yc,p,q;i<=m;i++){
		yc=Get_ch();p=read();q=read();
		if(yc){
			Merge(q+n,p);
			Merge(p+n,q); 
		}
		else
			Merge(p,q);
	}
	for(int i=1;i<=n;i++)
		if(fa[i]==i)  ans++;
	return 0*printf("%lld\n",ans);
}
2024/4/25 21:14
加载中...