超题解失败,WA两个点
查看原帖
超题解失败,WA两个点
1058570
tzhengqing楼主2024/7/15 08:31

题解的AC code:

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int fa[100100];
int find(int x)//并查集中的查询操作
{
	if(x==fa[x]) return x;
	return fa[x]=find(fa[x]);
}
int main()
{
	int n;
	cin>>n;
	for (int i=1;i<100100;i++)//所有数最开始都应指向它本身
	{
		fa[i]=i;
	}
	int a;
	for (int i=1;i<=n;i++)
	{
		cin>>a;
		a=find(a);//查询这个数
		fa[a]=find(a)+1;//修改它的父节点
		cout<<a<<" ";
	}
	return 0;
}

我自己写的,WA*2 code:

#include<bits/stdc++.h>
using namespace std;
int n,a[1000005];
int find(int x)
	{
	if(x!=a[x])a[x]=find(a[x]);
	return a[x];
	} 
int main()
    {
    cin>>n;
    for(int i=0;i<=n;i++)a[i]=i;
    for(int i=1;i<=n;i++)
        {
        int x;cin>>x;
        x=find(x);
        a[x]=find(x)+1;
        cout<<x<<' ';
        }
    return 0;
    }

SOS求救(玄亿关)

2024/7/15 08:31
加载中...