34D. Road Map - Codeforces Solution C++

  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!!