Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

RNR_01_09 - Git

Witaj w zespole!

Pozwól, że od razu przejdę do rzeczy. Nasze repozytorium Git zawiera n gałęzi. Każda gałąź poza główną została utworzona z innej znajdującej się w repozytorium. Oznacza to, że nasze repozytorium ma strukturę drzewa.

Twój poprzednik miał za zadanie przygotować listę wszystkich par gałęzi rodzic dziecko oznaczających, że gałąź dziecko została utworzona bezpośrednio z gałęzi rodzic. Niestety zamiast przeczytać dokładnie treść zadania wolał chyba skonsultować się w tej sprawie z wróżbitą Maciejem, bo zrobił coś zupełnie innego.

Dostarczył nam spis wszystkich gałęzi z naszego repozytorium, w którym przy każdej gałęzi wypisane są wszystkie gałęzie znajdujące się w jej poddrzewie. Szczerze mówiąc to nie mamy pewności czy jego spis faktycznie odpowiada poprawnej strukturze drzewa, musisz to sam sprawdzić.

Twoim zadaniem jest odtworzenie drzewa na podstawie informacji dostarczonych przez Twojego poprzednika, a następnie przygotowanie listy par gałęzi rodzic dziecko.

Wejście

W pierwszej linii wejścia podana jest liczba gałęzi w repozytorium n ∈ [2, 1000]. W kolejnych n liniach znajdują się opisy gałęzi.

Opis każdej gałęzi zawarty jest w jednej linii. Rozpoczyna się on od podania jej nazwy oraz liczby gałęzi znajdujących się w jej poddrzewie. Następnie podane są nazwy tych gałęzi. Gwarantujemy, że liczba gałęzi w poddrzewie nie przekracza n-1, zaś ich nazwy nie powtarzają się.

Nazwy gałęzi składają się z małych liter alfabetu angielskiego, cyfr oraz znaku podkreślenia. Ich długość nie przekracza 10 znaków.

Wyjście

Jeżeli informacje dostarczone przez Twojego poprzednika odpowiadają poprawnej strukturze drzewa i udało Ci się je odtworzyć to w pierwszej linii wyjścia należy wypisać słowo TAK. Następnie w kolejnych n-1 liniach należy podać pary gałęzi w formacie rodzic dziecko. Kolejność wypisania par jest dowolna.

W przeciwnym wypadku należy wypisać słowo NIE.

Przykład 1

Wejście:

13
iss_6 0
bgfx_2_1 0
goal_2 1 iss_4
bgfx_2_2 0
iss_4 0
goal_3 2 iss_6 iss_5
bgfx_3_1 0
iss_2 2 bgfx_2_2 bgfx_2_1
iss_3 1 bgfx_3_1
iss_5 0
release_1 12 iss_6 iss_1 iss_3 goal_1 iss_2 bgfx_3_1 goal_2 bgfx_2_2 goal_3 bgfx_2_1 iss_4 iss_5
iss_1 0
goal_1 6 bgfx_2_1 iss_1 bgfx_3_1 iss_3 iss_2 bgfx_2_2

Wyjście:

TAK
goal_3 iss_6
iss_2 bgfx_2_1
release_1 goal_2
goal_2 iss_4
iss_2 bgfx_2_2
release_1 goal_3
goal_3 iss_5
iss_3 bgfx_3_1
goal_1 iss_2
goal_1 iss_3
goal_1 iss_1
release_1 goal_1

Przykład 2

Wejście:

7
master 6 feature_1 feature_2 iss_1 iss_2 iss_3 iss_4
feature_1 2 iss_1 iss_2
feature_2 2 iss_3 iss_4
iss_1 0
iss_2 0
iss_3 0
iss_4 0

Wyjście:

TAK
master feature_1
master feature_2
feature_1 iss_1
feature_1 iss_2
feature_2 iss_3
feature_2 iss_4

Przykład 3

Wejście:

3
fix_1 2 fix_2 fix_3
fix_3 0
fix_2 1 fix_1

Wyjście:

NIE

Dodane przez:Maciej Boniecki
Data dodania:2019-02-22
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: GOSU
Pochodzenie:Rak n Roll 1

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.