CodeForces 34D Road Map

来源:互联网 发布:linux下源码安装mysql 编辑:程序博客网 时间:2024/05/22 12:41

给出每个点的父节点,存下来。

再从r2开始,dfs到r1,把这条路径上的所有结点的父节点改变方向就可以了。


#include <iostream>#include <cstdlib>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#define inf 0x3f3f3f3f#pragma comment(linker, "/STACK:16777216")#define eps 1e-6#define ll long longusing namespace std;int f[50010],r1,r2;void dfs(int a,int last){    if(a==r1)    {        f[a]=last;        return ;    }    dfs(f[a],a);    f[a]=last;}int main(){    int n,i;    while(~scanf("%d%d%d",&n,&r1,&r2))    {        for(i=1;i<=n;i++)        {            if(i==r1)            {                f[i]=r1;                continue;            }            scanf("%d",&f[i]);        }        dfs(r2,r2);        int flag=0;        for(i=1;i<=n;i++)        {            if(i==r2) continue;            if(flag) putchar(' ');            else flag=1;            printf("%d",f[i]);        }        puts("");    }    return 0;}


0 0