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; }