|
|||||||||||||||
|
Podpisy
W Urzędzie Ochrony Bajtocji (UOB) zatrudnieni są urzędnicy oraz dowódcy. W archiwum znajdują się teczki z aktami wszystkich urzędników. W każdej teczce znajduje się podpis urzędnika oraz podpisy pracowników (urzędników lub dowódców), którzy poręczają za jego lojalność. Każdy nowoprzyjmowany urzędnik musi uzyskać przynajmniej jedno poręczenie. Z biegiem czasu lista poręczycieli może się powiększać. UOB dowiedział się ostatnio, że do grona dowódców przeniknął szpieg wrogiej Mikromięklandii. Kolejni szpiedzy byli wprowadzani do UOB na stanowiska urzędnicze dzięki poręczeniu szpiega-dowódcy i/lub innych wprowadzonych szpiegów. Tacy szpiedzy mają poręczenia wyłącznie od pracowników będących szpiegami. Wiarygodność urzędnika można podważyć, jeżeli pośrednio nie ma on poręczenia żadnego dowódcy, który nie jest szpiegiem, tzn. nie istnieje taki ciąg pracowników UOB p1, p2, ... , pk, że p1 jest dowódcą nie będącym szpiegiem, pk jest danym urzędnikiem i (dla i=1, ... , k-1>) pi poręczył za pi+1. Jeżeli założenie o pewnym dowódcy, że jest szpiegiem spowodowałoby, że wiarygodność urzędnika zostałaby podważona, to urzędnik ten jest podejrzany o szpiegostwo. Dowództwo UOB chciałoby zobaczyć listę takich urzędników, i to jak najszybciej! Przykład
Dowódcy: Anna, Grzegorz. ZadanieNapisz program, który:
WejścieW pierwszym wierszu pliku tekstowego POD.IN zapisana jest dokładnie jedna dodatnia liczba całkowita n 1<=n<=500 będąca liczbą pracowników UOB. Pracownicy są ponumerowani od 1 do n. W kolejnych n wierszach zapisane są opisy poręczeń. W i+1-ym wierszu pliku znajduje się opis poręczeń udzielonych pracownikowi nr i. Jest to ciąg liczb całkowitych pooddzielanych pojedynczymi odstępami. Pierwsza liczba w tym ciągu, 0<=mi, jest równa liczbie poręczeń udzielonych pracownikowi nr i. Kolejne mi liczb to numery pracowników, którzy poręczyli za prawdomówność pracownika nr i. (Tak więc liczba wyrazów ciągu w i+1-ym wierszu wynosi mi + 1.) Dowódcy to Ci pracownicy, za których nikt nie poręczył. WyjścieTwój program powinien:
PrzykładDla pliku wejściowego POD.IN 9 0 1 1 1 2 2 2 3 2 1 7 1 5 0 2 7 9 2 7 8 poprawną odpowiedzią jest plik wyjściowy POD.OUT 2 3 4 8 9 |