站外题70分求助
  • 板块灌水区
  • 楼主somek_
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/10/2 19:14
  • 上次更新2023/11/2 16:29:52
查看原帖
站外题70分求助
1037054
somek_楼主2023/10/2 19:14

题目

代码:

#include <bits/stdc++.h>
using namespace std;
int father[100020],fa[100020];
int find(int x)
{
	while(x!=father[x])x=father[x];
	return x;
}
void family(int x,int y)
{
	x=find(x);
	y=find(y);
	if(x!=y)
	{
		father[y]=x;
		fa[x]+=fa[y];
	}
}
int main() {
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		father[i]=i;
		fa[i]=1;
	}
	for(int i=1;i<=m;i++)
	{
		char c;
		cin>>c;
		if(c=='M')
		{
			int a,b;
			scanf("%d%d",&a,&b);
			family(a,b);
		}
		if(c=='Q')
		{
			int a;
			scanf("%d",&a);
			printf("%d\n",fa[find(a)]);
		}
	}
}

错的30分是超时,find函数用递归版反而只得60分,要怎么改啊QAQ

2023/10/2 19:14
加载中...