#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <list>
#include <cstdlib>
#define LL long long
#define M 50010
using namespace std;
int p[M];
bool vis[M];
vector<int> v[M];
void dfs(int k)//树的遍历
{
vis[k]=true;
for(int i=0;i<v[k].size();i++)
{
if(!vis[v[k][i]])
{
p[v[k][i]]=k;
dfs(v[k][i]);
}
}
}
int main()
{
int n,r1,r2;
while(cin>>n>>r1>>r2)
{
for(int i=1;i<=n;i++)
v[i].clear();
memset(p,0,sizeof(p));
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)//先把树的相邻结点存起来
{
if(i!=r1)
{
int j;
cin>>j;
v[i].push_back(j);
v[j].push_back(i);
}
}
dfs(r2);
for(int i=1;i<=n;i++)
{
if(i!=r2)
cout<<p[i]<<' ';
}
cout<<endl;
}
return 0;
}
codeforces34D--Road Map
最新推荐文章于 2023-08-23 10:43:21 发布