怎么会全WA
查看原帖
怎么会全WA
677002
_molee_楼主2024/8/20 09:53
#include<bits/stdc++.h>
using namespace std;
long long t,a,b,te[30010],s[30010],zj[30010];
char c;
long long f(long long x)
{
	if(zj[x]==x) 
	{
		return x;
	}
	long long tem=f(zj[x]);
	te[x]+=te[zj[x]];
	zj[x]=tem;
	return tem;
}
int main()
{
	scanf("%lld",&t);
	for(int i=1;i<=30000;i++)
	{
		zj[i]=i;
		s[i]=1;
	}
	for(int i=1;i<=t;i++)
	{
		getchar();
		scanf("%c",&c);
		scanf("%lld %lld",&a,&b);
		long long fa=f(a),fb=f(b);
		if(c=='M')
		{
			te[fa]+=s[fb];
			s[fb]+=s[fa];
			s[fa]=0;
			zj[fa]=fb;
		}
		else if(fa==fb)
		{
			printf("%lld\n",abs(te[a]-te[b])-1);	
		}
		else 
		{
			printf("-1\n");
		}
	}
	return 0;
}
2024/8/20 09:53
加载中...