其他分享
首页 > 其他分享> > [NOI2002]银河英雄传说

[NOI2002]银河英雄传说

作者:互联网

带权并查集

有蜘蛛纸牌内味。

code:

#include<bits/stdc++.h>
using namespace std;
int T,a,bb,fa[30001],b[30001],s[30001];
char ch;
int fd(int x){
	if(x==fa[x])
		return x;
	int tp=fa[x];
	fa[x]=fd(fa[x]);
	s[x]+=s[tp];
	return fa[x];
}
int main(){
	cin>>T;
	for(int i=1;i<=30000;i++)
		fa[i]=i,b[i]=1;
	while(T--){
		cin>>ch;
		scanf("%d%d",&a,&bb);
		int faa=fd(a),fbb=fd(bb);
		if(ch=='M'){
			fa[faa]=fbb;
			s[faa]+=b[fbb];
			b[fbb]+=b[faa];
		}
		else{
		
			if(faa!=fbb)
				printf("-1\n");
			else
				printf("%d\n",abs(s[a]-s[bb])-1);
		}
	}return 0;
}

标签:bb,fbb,int,fa,银河,fd,NOI2002,faa,英雄
来源: https://www.cnblogs.com/GUOGaby/p/14020439.html