大神求教,哪里出了问题?
查看原帖
大神求教,哪里出了问题?
43763
Mistysun楼主2021/5/26 09:25
#include<iostream>
#include<cstdio>
//#include<bits/stdc++.h>
using namespace std;
int fx,fy,front[30005],num[30005],fa[30005],x,y,xx,yy,n;
char ch;
int find(int x)
{
	if(x!=fa[x])
	{
		front[x]+=front[fa[x]];
		fa[x]=find(fa[x]);
	}
	return fa[x];
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=30000;i++)front[i]=0,num[i]=1,fa[i]=i;
	for(int i=1;i<=n;i++)
	{
		cin>>ch>>x>>y;
		//scanf("%c %d %d",&ch,&x,&y);
		fx=find(x);
		fy=find(y);
		if(ch=='M')
		{
			front[fx]+=num[fy];
			fa[fx]=fy;
			num[fy]+=num[fx];
			num[fx]=0;
		}
		if(ch=='C')
		{
			if(fx!=fy)
			{
				printf("-1\n");
			}
			else
			if(fx==fy)
			{
				printf("%d\n",abs(front[x]-front[y])-1);

			}
		}
	}
	return 0;
}
2021/5/26 09:25
加载中...