题解的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求救(玄亿关)