代码如下,目前结果是输入后死机
#include<bits/stdc++.h>
int n,f[500009],r1,r2,fa[500009],cnt;
int j;
using namespace std;
vector<int> link[500009];
void dfs(int pos,int pre)
{
fa[pos]=pre;
for(j=0;j<link[pos].size();j++)
if(link[pos][j]!=pre) dfs(link[pos][j],pre);
}
int main()
{
cin>>n>>r1>>r2;
for(int i=1;i<=n;i++)
{
if(i==r1) continue;
else {cin>>f[i];link[i].push_back(f[i]);link[f[i]].push_back(i);}
}
dfs(r2,0);
for(int i=1;i<=n;i++) if(i!=r2) cout<<fa[i]<<" ";
return 0;
}