PROBLEM D: Przodek

Transkrypt

PROBLEM D: Przodek
XIV Dolnośląskie Zawody w Programowaniu Zespołowym,
Wrocław, 21-22. czerwca 2011
PROBLEM D: Przodek
Problem
W drzewie z korzeniem dla dwóch wybranych wierzchołków zawsze istnieje najbliższy wspólny przodek.
Przodkami wierzchołka v są wszystkie wierzchołki na drodze do korzenia, z tym wierzchołkiem włącznie.
Dla dwóch wierzchołków u i v w drzewie najbliższy wspólny przodek jest to taki wierzchołek, który jest
przodkiem dla obydwóch wierzchołków i który jest jednocześnie najbliżej tych wierzchołków.
4
1
6
5
8
2
7
3
Dla powyższego przykładu najbliższym wspólnym przodkiem wierzchołków 2 i 3 jest wierzchołek 8.
Wejście
W pierwszej linii znajdują się trzy liczby N, M, P. Liczba N (1<=N <= 10000) oznacza liczbę
wierzchołków. W kolejnych M (M<N) liniach znajdują się opisy bezpośrednich potomków opisywanych
wierzchołków. Każda linia składa się z numeru wierzchołka Vi, liczby jego bezpośrednich potomków ni
oraz listy ni liczb oznaczającymi bezpośrednich potomków. Wierzchołki z zerową liczbą bezpośrednich
potomków nie są ujęte w tym spisie. Następne P linii zawiera pary liczb oznaczające wierzchołki, dla
których mamy znaleźć najbliższego wspólnego potomka. Są to zawsze numery istniejące w drzewie.
Wszystkie liczby są rozdzielane spacjami. Numery wierzchołków są z zakresu od 1 do 10000.
Wyjście
W kolejnych P liniach liczby będące najbliższymi wspólnymi przodkami dla kolejnych P par z danych
wejściowych.
Przykład
Wejście
843
43158
116
8227
713
23
63
37
Wyjście
8
4
7

Podobne dokumenty