GARDEN Ogród tropikalny (Tropical Garden)
Transkrypt
GARDEN Ogród tropikalny (Tropical Garden)
International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 GARDEN Polish 1.5 Ogród tropikalny (Tropical Garden) Zapalony botanik Bajtazar często zabiera grupy studentów do jednego z największych ogrodów tropikalnych w Tajlandii. W ogrodzie znajduje się N fontann ponumerowanych od 0 do N-1. Fontanny połączone są M ścieżkami. Każda ścieżka jest dwukierunkowa i łączy inną parę różnych fontann. Do każdej fontanny prowadzi co najmniej jedna ścieżka. Wokół ścieżek rosną fantastyczne rośliny, które Bajtazar chciałby zobaczyć. Spacer z różnymi grupami studentów może rozpoczynać się przy różnych fontannach. Bajtazar uwielbia piękne rośliny tropikalne. Od każdej fontanny prowadzi studentów najpiękniejszą ze ścieżek, chyba że jest to ścieżka, którą właśnie przyszli, i mogą pójść w innym kierunku. W takim przypadku grupa idzie drugą pod względem urody ścieżką. Jeśli nie ma wyboru, wraca ona ze skrzyżowania, idąc drugi raz po tej samej ścieżce. Bajtazar jest profesjonalnym botanikiem i żadne dwie ścieżki nie są dla niego równie piękne. Studenci nie są zbytnio zainteresowani roślinami, jednak z radością zjedliby obiad w luksusowej restauracji przy fontannie numer P. Bajtazar wie, że studenci zgłodnieją po przejściu dokładnie K ścieżek, przy czym wartość ta może być inna dla każdej grupy studentów. Bajtazar zastanawia się, ile różnych tras spaceru może wybrać dla każdej z grup, przy czym: każda grupa może rozpocząć spacer przy dowolnej fontannie, kolejne ścieżki na trasie muszą być wybierane zgodnie z powyższymi zasadami, oraz każda grupa musi zakończyć spacer przy fontannie numer P po przejściu dokładnie K ścieżek. Zwróć uwagę, że grupy mogą przechodzić koło fontanny numer P w trakcie swojego spaceru, jednak liczy się tylko to, by cały spacer zakończył się przy tej fontannie. Zadanie Dla podanego opisu fontann i ścieżek w ogrodzie, znajdź odpowiedzi na pytanie nurtujące Bajtazara dla Q grup studentów, czyli Q wartości K. Zaimplementuj procedurę count_routes(N, M, P, R, Q, G). Jej parametry to: N – liczba fontann. Fontanny są ponumerowane liczbami od 0 do N-1. M – liczba ścieżek. Ścieżki są ponumerowane liczbami od 0 do M-1. Kolejne ścieżki są coraz mniej ładne, tj. dla 0 ≤ i < M-1, ścieżka numer i jest ładniejsza niż ścieżka numer i+1. P – fontanna, przy której znajduje się luksusowa restauracja. R – dwuwymiarowa tablica opisująca ścieżki. Ścieżka numer i (0 ≤ i < M) łączy fontanny o numerach R[i][0] oraz R[i][1]. Każda ścieżka łączy parę różnych fontann. Pomiędzy parą fontann istnieje co najwyżej jedna ścieżka. Q – liczba grup studentów. G – jednowymiarowa tablica liczb całkowitych zawierająca wartości K. Dla 0 ≤ i < Q, G[i] określa liczbę ścieżek K, które przejdzie i-ta grupa. Dla 0 ≤ i < Q, Twoja procedura powinna znaleźć liczbę możliwych tras składających się z dokładnie G[i] ścieżek. Każda z tych tras powinna zaprowadzić grupę numer i do fontanny P. Dla każdej grupy, Twoja procedura powinna wywołać procedurę answer(X), gdzie X to wyznaczona Page 1 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 GARDEN Polish 1.5 liczba ścieżek. Odpowiedzi należy udzielać w porządku zgodnym z kolejnością grup. Jeśli nie istnieje żadna dopuszczalna ścieżka, Twoja procedura powinna wywołać procedurę answer(0). Przykłady Przykład 1. Rozważmy przykład z rysunku numer 1, gdzie N=6, M=6, P=0, Q=1, G[0]=3 oraz 12 01 03 R= 34 45 15 Zauważ, że ścieżki są podane w kolejności od najpiękniejszej do najmniej ładnej. Istnieją dwie poprawne ścieżki długości 3: Rysunek 1. 1 → 2 → 1 → 0 oraz 5 → 4 → 3 → 0. Pierwsza ścieżka rozpoczyna się przy fontannie numer 1. Najpiękniejsza ścieżka prowadzi do fontanny numer 2. Przy fontannie numer 2 grupa nie ma wyboru, zatem wraca po tej samej ścieżce. Po powrocie do fontanny numer 1 grupa ominie ścieżkę numer 0 i zamiast niej wybierze ścieżkę numer 1. Zaprowadzi ona grupę do fontanny P=0. Procedura powinna zatem wywołać answer(2). Przykład 2. Rozważmy przykład z rysunku numer 2, gdzie N=5, M=5, P=2, Q=2, G[0]=3, G[1]=1 oraz 10 12 R= 3 2 13 42 Rysunek 2. Dla pierwszej grupy studentów istnieje tylko jedna poprawna trasa kończąca się przy fontannie numer 2 po przejściu 3 ścieżek: 1 → 0 → 1 → 2. Dla drugiej grupy studentów istnieją dwie poprawne trasy prowadzące do fontanny numer 2 w jednym kroku: 3 → 2 oraz 4 → 2. Page 2 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 GARDEN Polish 1.5 Zatem poprawna implementacja procedury count_routes powinna wywołać najpierw answer(1), aby udzielić odpowiedzi dla pierwszej grupy studentów, a następnie wywołać answer(2), by udzielić odpowiedzi dla drugiej grupy studentów. Podzadania Podzadanie 1. (49 punktów) 2 ≤ N ≤ 1 000 1 ≤ M ≤ 10 000 Q=1 Każdy element tablicy G to liczba całkowita z przedziału [1,100]. Podzadanie 3. (31 punktów) 2 ≤ N ≤ 150 000 1 ≤ M ≤ 150 000 1 ≤ Q ≤ 2 000 Każdy element tablicy G to liczba całkowita z przedziału [1, 1 000 000 000]. Podzadanie 2. (20 punktów) 2 ≤ N ≤ 150 000 1 ≤ M ≤ 150 000 Q=1 Każdy element tablicy G to liczba całkowita z przedziału [1, 1 000 000 000]. Szczegóły techniczne Ograniczenia Limit czasu procesora: 5 sekund Dostępna pamięć: 256 MB Uwaga: Nie ma osobnego ograniczenia na rozmiar stosu. Pamięć użyta przez stos wlicza się w całkowity rozmiar używanej pamięci. Interfejs (API) Katalog na pliki źródłowe: garden/ Nazwa pliku z rozwiązaniem: garden.c lub garden.cpp lub garden.pas Interfejs procedur zawodnika: garden.h lub garden.pas Interfejs procedur modułu oceniającego: gardenlib.h lub gardenlib.pas Przykładowy moduł oceniający: grader.c lub grader.cpp lub grader.pas Pliki wejściowe dla przykładowego modułu oceniającego: grader.in.1, grader.in.2, ... Uwaga: Przykładowy moduł oceniający wczytuje dane zgodnie z poniższym formatem: Wiersz 1: N, M oraz P. Wiersze od 2 do M+1: opis ścieżek; wiersz i+2 (0 ≤ i < M) zawiera liczby R[i][0] oraz R[i][1] oddzielone pojedynczym odstępem. Wiersz M+2: Q. Wiersz M+3: tablica G podana jako ciąg liczb całkowitych, oddzielonych Page 3 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 GARDEN Polish 1.5 pojedynczymi odstępami. Wiersz M+4: tablica oczekiwanych odpowiedzi podana jako ciąg liczb całkowitych oddzielonych pojedynczymi odstępami. Pliki z oczekiwaną odpowiedzią dla przykładowych wejść przykładowego modułu oceniającego: grader.expect.1, grader.expect.2, ... W tym zadaniu powyższe pliki powinny zawierać jedynie napis „Correct.” Page 4 of 4