Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
MWP3_1E1 - PIT |
Jan po ukończeniu studiów bez problemu znalazł pracę jako programista w firmie Trouble Inc. Miesiące mijały naszemu bohaterowi na beztroskim programowaniu i startach w zawodach algorytmicznych, aż nadszedł ten straszny dzień - dzień złożenia PITu! Zapewne wszyscy mieli/będą mieli1 niewątpliwą/wątpliwą2 przyjemność wypełniania i składania różnego rodzaju formularzy w urzędzie skarbowym. Procedury tam obowiązujące, co powszechnie wiadomo, są szalenie skomplikowane, a załatwienie czegokolwiek niezwykle trudne, czasami wręcz niemożliwe. Jan chcąc złożyć formularz A dowiedział się, że najpierw musi wypełnić i złożyć formularz B. Niestety, formularza B nie można złożyć bez wcześniejszego uzupełnienia formularza C itd... Jan postanowił załatwić sprawę jak na informatyka przystało - napisać program, który ustali kolejność składania formularzy. Spisał on pary formularzy jakie należy wypełnić i złożyć, uwzględniając przy tym ich kolejność. Zapis 1 2 oznaczał, że formularz 1 należy złożyć przed formularzem 2. Po spisaniu wszystkich par okazało się, że kolejności wypełniania niektórych formularzy nie da się ustalić np. dla par: 1 2, 2 3, 3 1. W takim wypadku nasz bohater grupował formularze i oznaczał grupę największym spośród numerów formularzy. W podanym przypadku byłby to numer 3. Jan napisał program i złożył swój PIT przed upływem terminu. Nie zapominaj jednak, że i Ty trafisz kiedyś do urzędu skarbowego z podobnym problemem - nie zwlekaj napisz swój program już dziś!
Wejście
W pierwszej linii wejścia znajduje się jedna liczba naturalna Z (1 ≤ Z ≤ 5) określająca ilość zestawów danych. W kolejnych liniach znajdują się zestawy danych.
W pierwszej linii każdego zestawu danych znajdują się dwie liczby naturalne n oraz m (2 ≤ n ≤ 1000; (n - 1) ≤ m ≤ ((n - 1) × n) ) określające odpowiednio ilość formularzy do wypełnienia oraz ilość zapisanych par określających kolejność. W kolejnych m liniach znajdują się po dwie liczby naturalne a i b (0 ≤ a, b < n i a ≠ b) określające, że formularz o numerze a powinien zostać złożony przed formularzem o numerze b. Gwarantujemy, że każdy formularz wystąpi w przynajmniej jednej parze.
Wyjście
Dla każdego zestawu należy wypisać numery formularzy oraz ewentualnych grup formularzy w kolejności składania. W przypadku gdy istnieje kilka poprawnych ustawień należy wypisać to, które jest najmniejsze leksykograficznie.
Przykład
Wejście:
1 7 9 6 1 0 2 2 4 4 0 0 1 4 5 5 3 3 1 1 5
Wyjście:
4 6 5
1, 2 - niepotrzebne skreślić
Dodane przez: | Maciej Boniecki |
Data dodania: | 2010-12-02 |
Limit czasu wykonania programu: | 0.100s-1s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM32-GCC ASM64 MAWK BC C-CLANG NCSHARP CPP14-CLANG COBOL COFFEE D-CLANG D-DMD ELIXIR FANTOM FORTH GOSU GRV JS-MONKEY JULIA KTLN NIM OBJC OBJC-CLANG OCT PICO PROLOG R RACKET RUST SCM qobi CHICKEN SQLITE SWIFT UNLAMBDA VB.NET |
Pochodzenie: | III Mistrzostwa WWSI w Programowaniu |