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