1057A - Bmail Computer Network - CodeForces Solution


*special problem dfs and similar trees *900

Please click on ads to support us..

Python Code:

n = int(input())
ll=list(map(int,input().split()))
ll.insert(0,"x")
kk=[]
i=n-1
while ll[i]!="x":
    kk.append(i+1)
    i=ll[i]-1
kk.append(1)
kk.reverse()
print(*kk)

C++ Code:

#include <iostream>
#include <algorithm>
using namespace std;

const int mn = 2e5 + 10;
int p[mn];
int sol[mn];

int main()
{
    // numero de enrutadores (o nodos)
    int n;
    scanf("%d", &n);

    // p_i es igual al indice del enrutador al que se conecto el i-esimo enrutador
    // despues de comprarlo
    // el primer enrutador va a tener p_i = 0
    p[0] = 0;
    for (int i = 1; i < n; i++)
    {
        cin >> p[i];
        p[i]--;
    }

    int k = n - 1, cnt = 0;
    // recorremos el grafo desde el nodo n -1 hacia arriba, hasta llegar a la raiz
    while (p[k] != k)
    {
        sol[cnt++] = k;
        // ponemos k igual a p_k
        k = p[k];
    }
    sol[cnt++] = 0;

    // ahora, imprimimos el arreglo sol en orden reverso
    reverse(sol, sol + cnt);
    for (int i = 0; i < cnt; i++)
    {
        printf("%d ", sol[i] + 1);
    }
    printf("\n");

    return 0;
}


Comments

Submit
0 Comments
More Questions

1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad
189A - Cut Ribbon
1182A - Filling Shapes
82A - Double Cola
45A - Codecraft III
1242A - Tile Painting
1663E - Are You Safe
1663D - Is it rated - 3
1311A - Add Odd or Subtract Even
977F - Consecutive Subsequence
939A - Love Triangle
755A - PolandBall and Hypothesis
760B - Frodo and pillows
1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers
1438B - Valerii Against Everyone
822A - I'm bored with life
9A - Die Roll
1430B - Barrels
279B - Books