codeforces34D--Road Map

来源:互联网 发布:ip什么意思网络用语 编辑:程序博客网 时间:2024/05/16 15:05
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <list>#include <cstdlib>#define LL long long#define M 50010using 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;}

0 0