➤ Problem Link : 34D. Road Map
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int parent[500001];
vector<int>
adj[500001];
void dfs(int v, int p)
{
for(int i=0;i<adj[v].size();i++)
{
if(adj[v][i]==p)
continue;
parent[adj[v][i]]=v;
dfs(adj[v][i],v);
}
}
int main()
{
int n,r1,r2,p;
cin>>n>>r1>>r2;
for(int i=1;i<=n;i++)
{
if(i==r1)
continue;
cin>>p;
adj[i].push_back(p);
adj[p].push_back(i);
}
parent[r2]=r2;
dfs(r2,-1);
for(int i=1;i<=n;i++)
{
if(i==r2)
continue;
cout<<parent[i]<<" ";
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
