0643 – Det Drum1
Cerința[edit | edit source]
Se dă vectorul de tați al unui arbore cu rădăcină cu n
noduri și un nod k
. Determinați drumul de la rădăcina arborelui la nodul k
.
Date de intrare[edit | edit source]
Fișierul de intrare detdrum1IN.txt
conține pe prima linie numărul de noduri n
și nodul k
. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.
Date de ieșire[edit | edit source]
Fișierul de ieșire detdrum1OUT.txt
va conține pe prima linie nodurile care alcătuiesc drumul determinat, separate printr-un spațiu.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 100
1 ≤ k ≤ n
- în vectorul de tați rădăcina este marcată cu
0
Exemplul 1[edit | edit source]
detdrum1IN.txt:
7 2
4 1 7 0 7 7 1
detdrum1OUT.txt:
4 1 2
Exemplul 2[edit | edit source]
detdrum1IN.txt:
101 2
4 1 7 0 7 7 1
Output:
Invalid input. Please check the conditions.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def is_valid_input(n, k):
return 1 <= n <= 100 and 1 <= k <= n
with open("detdrum1IN.txt", "r") as infile, open("detdrum1OUT.txt", "w") as outfile:
n, k = map(int, infile.readline().split())
if not is_valid_input(n, k): print("Invalid input. Please check the conditions.") else: t = [0] + list(map(int, infile.readline().split()))
def detdrum(nod): if nod == 0: return detdrum(t[nod]) outfile.write(str(nod) + " ")
detdrum(k)
</syntaxhighlight>