WA保龄求调
查看原帖
WA保龄求调
496117
wyh0721楼主2024/7/23 09:14
#include <bits/stdc++.h>
using namespace std;
int n,fa[30005],dis[30005],l[30005];   
int find(int x)
{
    if (fa[x]==x)
		return x;
    int fax=find(fa[x]);
    dis[x]+=dis[fa[x]];
    fa[x]=fax;
    return fax;
}
void move(int x,int y)
{
    int fx=find(x);
    int fy=find(y);
    fa[fx]=fy;
    dis[fx]+=l[fy];	
    l[fy]+=l[fx];
    return;
}
int main()
{
    cin>>n;
    for (int i=1;i<=30005;i++)
	{
		fa[i]=i;
   		l[i]=1;
	}
    for (int i=1;i<=n;i++)
    {
        char c;
        int x; 
		cin>>c>>x; 
        if (c=='M')
        {
        	int y;
        	cin>>y;
            move(x,y);
        }
        else
		{
			int fx=find(x); 
   			cout<<dis[x]<<endl;
		}
    }
    return 0;
}
2024/7/23 09:14
加载中...