首页 > 代码库 > CodeForces 34D Road Map
CodeForces 34D Road Map
给出每个点的父节点,存下来。
再从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 long using 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; }
CodeForces 34D Road Map
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。