Jak wszyscy wiemy, w Minecrafcie istnieją wioski. Steve bardzo lubi odwiedzać swoich znajomych wieśniaków, dlatego pomiędzy niektórymi parami wiosek zbuduje bezpośrednie połączenia kolejowe. Żadne dwa tory nie będą się krzyżować, ponieważ tam, gdzie jest to konieczne, powstaną tunele lub estakady. Innymi słowy, wioski wraz z połączeniami kolejowymi będą tworzyły graf.
Jedyną rzeczą, która cieszy Steve’a bardziej niż zdobywanie diamentów, jest widok kotów. Dlatego chce on, aby w każdej wiosce znajdowała się ich pewna liczba, przy czym muszą być spełnione następujące warunki:
Nie istnieje cykl wiosek taki, że w każdej wiosce na tym cyklu znajduje się taka sama liczba kotów.
Dla każdej pary różnych liczb kotów ci, cj występujących w pewnych wioskach, istnieje cykl, na którym:
- znajduje się co najmniej jedna wioska z liczbą kotów ci
- znajduje się co najmniej jedna wioska z liczbą kotów cj
- nie znajduje się żadna wioska z inną liczbą kotów.
Cyklem nazywamy ciąg różnych wiosek (W1,…,Wc) (3≤c) taki, że istnieje bezpośrednie połączenie kolejowe pomiędzy wioskami Wi i Wi + 1 dla każdego 1 ≤ i ≤ c − 1 oraz pomiędzy wioskami Wc i W1.
Steve nie jest jednak pewny, jak dokładnie będzie wyglądała sieć kolejowa, ani nawet ile wiosek będzie chciał w niej uwzględnić. Pomóż mu stwierdzić dla każdego planu, ile kotów powinno znajdować się w każdej wiosce, lub określić, że spełnienie jego wymagań nie jest możliwe.
Wejście
W pierwszym wierszu wejścia znajduje się liczba T oznaczająca liczbę planów sieci kolejowych.
W pierwszym wierszu opisu każdego planu znajdują się dwie liczby naturalne N oraz M, określające odpowiednio liczbę wiosek i połączeń kolejowych. W kolejnych M wierszach podane są dwie liczby naturalne Ai oraz Bi, oznaczające, że pomiędzy wioskami Ai oraz Bi istnieje bezpośrednie połączenie kolejowe.
Gwarantowane jest, że Ai ≠ Bi. Każda nieuporządkowana para (Ai,Bi) może wystąpić w planie co najwyżej raz.
Wyjście
Dla każdego planu, jeżeli nie istnieje poprawne przyporządkowanie
liczby kotów, wypisz pojedynczy wiersz zawierający słowo
NIE. W przeciwnym wypadku wypisz wiersz ze słowem
TAK oraz liczbę naturalną K, oznaczającą maksymalną liczbę
kotów w pewnej wiosce. W następnym wierszu wypisz N liczb naturalnych z zakresu od
1 do K, gdzie i-ta liczba oznacza liczbę kotów w
wiosce i, tak aby warunki
Steve’a były spełnione oraz aby dla każdego 1 ≤ x ≤ K istniała co
najmniej jedna wioska z dokładnie x kotami.
Jeżeli istnieje wiele poprawnych rozwiązań, wypisz dowolne z nich.
Ograniczenia
1 ≤ T ≤ 2 000, 2 ≤ N ≤ 1 000 000, 1 ≤ M ≤ 3 000 000, 1 ≤ Ai, Bi ≤ N. Suma N + M po wszystkich planach wynosi co najwyżej 4 000 000.
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | M = N − 1 oraz dla wszystkich 1 ≤ i ≤ N − 1, Ai ≤ i, Bi = i + 1 | 4 |
| 2 | $M=\frac{N(N-1)}{2}$ | 7 |
| 3 | N + M ≤ 100 | 27 |
| 4 | Suma N + M po wszystkich planach wynosi co najwyżej 200 000 | 26 |
| 5 | Brak dodatkowych ograniczeń | 36 |
Przykład
| Wejście | Wyjście | |
|
|
Jednym z podstawowych elementów przetrwania w grze Minecraft jest unikanie głodu. Alex odczuwa głód, dlatego postanowiła złowić ryby w pobliskim jeziorze. W rejonie jeziora, w którym się znajduje, ryb jest jednak niewiele, dlatego postanowiła przepłynąć na jego przeciwległy róg i spróbować łowić tam.
Jezioro ma kształt prostokąta o wymiarach N × M bloków. Początkowo łódka Alex znajduje się w bloku położonym w rogu jeziora o współrzędnych (1,1), a celem jest dopłynięcie do przeciwległego rogu jeziora, czyli bloku o współrzędnych (N,M). Alex może poruszać się wyłącznie w górę, w dół oraz na boki i nie może opuszczać łódki. Jezioro znajduje się w biomie tajgi, w związku z czym część jego bloków stanowią bloki lodu, przez które łódka nie może przepłynąć, a pozostałe bloki są blokami wody.
Alex ma zużyty kilof, za pomocą którego może niszczyć bloki lodu, torując sobie drogę. Kilof jest niemal całkowicie wyczerpany, dlatego Alex może zniszczyć jedynie 2 bloki lodu. Ponadto, z powodu ograniczonego miejsca w ekwipunku, postanowiła zniszczyć dokładnie 2 bloki lodu, żeby w pełni zużyć kilof.
Alex zastanawia się, na ile różnych sposobów może to osiągnąć. Pomóż jej i wyznacz liczbę par bloków lodu, znajdujących się w dowolnym miejscu w obszarze jeziora, po których zniszczeniu Alex będzie mogła przepłynąć przez jezioro.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N i M, oznaczające wymiary jeziora.
Następne N wierszy opisuje
jezioro, każdy wiersz zawiera M znaków . lub
X, j-ty znak w
i-tym wierszu (Bi, j)
określa, czy blok o współrzędnych (i,j) jest blokiem wody
(Bi, j=
.) czy blokiem lodu (Bi, j=
X).
Jest gwarantowane, że B1, 1 = BN, M=
.
Wyjście
W pierwszym i jedynym wierszu wyjścia powinna znaleźć się pojedyncza liczba całkowita oznaczająca liczbę różnych par bloków lodu, po których zniszczeniu Alex może przepłynąć z (1,1) do (N,M).
Ograniczenia
1 ≤ N ⋅ M ≤ 250 000, 1 ≤ N, M
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | Po zniszczeniu dowolnego bloku lodu można dopłynąć z (1,1) do (N,M) | 5 |
| 2 | N ≤ 2 | 16 |
| 3 | N ⋅ M ≤ 10 000 | 29 |
| 4 | Brak dodatkowych ograniczeń | 50 |
Przykłady
| Wejście | Wyjście | Wyjaśnienie |
|
|
Jedyne pary bloków lodu po zniszczeniu których można przepłynąć z (1,1) do (3,5) to: (1,3) i (2,2), (1,3) i (2,3), (1,3) i (3,3), (1,3) i (3,4), (2,2) i (2,3), (2,3) i (3,3) oraz (3,3) i (3,4). |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Nie da się zniszczyć dokładnie dwóch bloków lodu, ponieważ jest tylko jeden blok lodu. |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Żeby można było przepłynąć z (1,1) do (5,7), trzeba zniszczyć przynajmniej jeden blok lodu z kolumny j = 6. Jeśli zniszczony zostanie blok (1,6), to drugi blok w parze może być dowolny (12 kombinacji). Jeśli nie zostanie zniszczony blok (1,6), ale zostanie zniszczony blok:
12 + 1 + 2 + 0 + 2 = 17 |