emm,太水了,没啥好讲的..
代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N=5e4+5;
vector<int>v[N];
int ans[N];
void dfs(int u,int fa)
{
    for(int i=0;i<v[u].size();i++)
    {
        int x=v[u][i];
        if(x==fa) continue;
        ans[x]=u;
        dfs(x,u);
    }
}

int main()
{
    int n,old,now;
    scanf("%d%d%d",&n,&old,&now);
    for(int i=1;i<=n;i++)
    {
        if(i==old) continue;
        int x;scanf("%d",&x);
        v[x].push_back(i);
        v[i].push_back(x);
    }
    dfs(now,0);
    for(int i=1;i<=n;i++)
    {
        if(i!=now) printf("%d ",ans[i]);
    }puts("");
    return 0;
}