求助,数据能过,可是洛谷不得分(点2)
查看原帖
求助,数据能过,可是洛谷不得分(点2)
478861
Gumbo楼主2021/8/6 10:50
#include<cstdio>
int db[1005];
int dr[1005];
bool f[1005];
inline int read(void){
	register int ans=0;
	register char us=getchar();
	while(us>'9'||us<'0')us=getchar();
	while(us>='0'&&us<='9'){
		ans=(ans<<3)+(ans<<1)+(us^48);
		us=getchar();
	}
	return ans;
}
inline int t(int x){
	if(db[x]!=x)db[x]=t(db[x]);
	return db[x];
}
int main(){
	register int n,m,i,p,q;
	register char c;
	n=read();m=read();
	for(i=1;i<=n;++i)db[i]=i;
	for(i=0;i<m;++i){
		scanf("%c",&c);
		p=read();q=read();
		if(c=='F')db[t(p)]=t(q);
		if(c=='E'){
			if(dr[p]==0)dr[p]=q;
			else db[t(q)]=t(dr[p]);
			if(dr[q]==0)dr[q]=p;
			else db[t(p)]=t(dr[q]);
		}
	}
	for(i=1;i<=n;++i)f[t(i)]=true;
	int shfneh=0;
	for(i=1;i<=n;++i)if(f[i])++shfneh;
	printf("%d",shfneh);
	return 0;
}
2021/8/6 10:50
加载中...