| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 6 초 (추가 시간 없음) | 1024 MB | 1 | 1 | 1 | 100.000% |
Witamy na wyspie Bitcairn! Mamy tu wszystko – osady, drogi, przepiękne jezioro, Internet, potwora żyjącego w jeziorze gotowego zniszczyć całą wyspę, idealną tropikalną pogodę. . . Chwila, potwór w jeziorze?
Bajtezjusz, gubernator Bitcairn, właśnie zlecił Ci przygotowanie planu ewakuacji turystów z wyspy w razie ataku potwora. Udzielił Ci następujących informacji o wyspie:
Aby umożliwić ewakuację, musisz zaprojektować plan budowy portów. Plan opisuje, w których nadmorskich osadach należy wybudować porty gotowe na zabranie turystów z wyspy, a w których z portów należy zrezygnować. Plan zapewnia bezpieczeństwo turystom tylko wtedy, gdy każdy turysta mieszkający w osadzie nad jeziorem będzie w stanie dostać się do chociaż jednego portu. Dwa plany budowy są różne, jeśli port w pewnej osadzie powstanie tylko w jednym z tych planów.
Bajtezjusz chciałby dowiedzieć się od Ciebie, ile istnieje zapewniających bezpieczeństwo planów budowy portów. Ponieważ wynik może być duży, wystarczy, że podasz jego resztę z dzielenia przez 109 + 7. Pospiesz się – bezpieczeństwo turystów zależy od Ciebie!
∗Innymi słowy, graf wyznaczony przez osady i drogi jest planarny.
Pierwszy wiersz wejścia zawiera cztery liczby całkowite n, m, a i b (2 ≤ n ≤ 500 000, 1 ≤ m ≤ 1 000 000, a, b ≥ 1, a + b ≤ n), oznaczające kolejno: liczbę osad na wyspie, liczbę łączących je dróg oraz liczbę osad leżących odpowiednio na brzegu jeziora i morza.
Kolejne m wierszy wejścia opisuje drogi na wyspie; każdy z nich jest jednej z następujących postaci (przy czym 1 ≤ ui, vi ≤ n oraz ui ≠ vi):
Żadna para dróg nie łączy tej samej pary osad. Możesz założyć, że osady oraz drogi są rozplanowane w taki sposób, że żadne dwie drogi nie przecinają się oraz żadna droga nie przechodzi przez inne osady, jezioro ani morze. Ponadto, z każdej osady leżącej nad brzegiem jeziora można dojechać do przynajmniej jednej nadmorskiej osady.
Wyjście powinno zawierać jedną liczbę całkowitą – resztę z dzielenia przez 109 + 7 liczby sposobów, na które możemy wybudować porty w przymorskich osadach tak, by wyspa stała się bezpieczna.
6 8 3 3 2 -> 1 2 -> 3 1 -> 3 3 -- 6 1 -> 4 2 -> 5 4 -> 6 4 -- 5
4
8 7 3 4 1 -> 4 1 -> 5 2 -> 4 2 -> 8 3 -> 6 3 -> 5 8 -> 6
8
Wyjaśnienie przykładów: W pierwszym przykładzie władze wyspy muszą wybudować port w osadzie 6, aby turyści z osady 3 mogli wydostać się z wyspy. Do tego portu mogą również dostać się turyści z osad 1 i 2, nie jest więc istotne, czy wybudujemy porty w pozostałych osadach (o numerach 4 i 5).
W drugim przykładzie należy wybudować porty w co najmniej dwóch spośród trzech osad 4, 5 i 6 (z każdej osady nad brzegiem jeziora można dostać się do dwóch spośród osad 4, 5 i 6, a z osady 8 nie musi istnieć droga do portu). Nie jest jednak ważne, czy port w osadzie 7 zostanie wybudowany. Nietrudno wywnioskować, że zbiór portów gwarantujący bezpieczeństwo można wybudować na 8 sposobów.
Contest > Algorithmic Engagements > PA 2019 4-2번