|
|||||||
|
Gra w sumowanie
Gra w sumowanie jest grą dla dwóch graczy. Toczy się ona na planszy z narysowanym spójnym grafem nieskierowanym. W każdym wierzchołku grafu zapisana jest liczba całkowita. Przed rozpoczęciem gry losowany jest wierzchołek startowy i ustawiany jest w nim pionek. Gracze mają początkowo po zero punktów. Gracze wykonują ruchy na przemian. Ruch polega na dodaniu liczby znajdującej się w wierzchołku, na którym stoi pionek do liczby punktów gracza wykonującego ruch, a następnie, o ile to możliwe, przesunięciu pionka do sąsiedniego wierzchołka po krawędzi, po której nie przesuwano jeszcze pionka. Jeśli nie można przesunąć pionka w ten sposób, to gra się kończy i wygrywa gracz, który zgromadził więcej punktów. Jeśli liczby punktów są równe, gra kończy się remisem. Powiemy, że wierzchołek zapewnia istnienie strategii wygrywającej, jeśli w momencie, gdy pionek znajdzie się w tym wierzchołku (niekoniecznie po raz pierwszy), gracz, który ma wykonać ruch, może wygrać niezależnie od tego, jaki jest wierzchołek startowy, jakie ruchy obydwaj gracze wykonywali wcześniej i jakie ruchy będzie później wykonywał przeciwnik. ZadanieTwoim zadaniem jest znalezienie wierzchołków zapewniających istnienie strategii wygrywającej na planszach opisanych w plikach sumi.in (1 <= i <= 10) i zapisanie ich w plikach sumi.out. W tym zadaniu oceniane będą jedynie te pliki wyjściowe, a nie program. WejścieW pierwszym wierszu pliku wejściowego zapisane są dwie liczby całkowite n i m, gdzie n oznacza liczbę wierzchołków, a m liczbę krawędzi. Wierzchołki są ponumerowane od 1 do n. W następnych n wierszach zapisane są pojedyncze liczby całkowite. Liczba znajdująca się w wierszu o numerze i+1 jest liczbą znajdującą się w i-tym wierzchołku grafu. W następnych m wierszach są po dwie liczby całkowite. Liczby w wierszu o numerze n+i+1 są numerami wierzchołków połączonych i-tą krawędzią. WyjścieW pierwszym wierszu pliku wyjściowego powinna znaleźć się liczba k równa liczbie wierzchołków zapewniających istnienie strategii wygrywającej. W kolejnych k wierszach powinny znaleźć się uporządkowane rosnąco numery tych wierzchołków. PrzykładDla pliku wejściowego sum0.in: 6 6 1 10 1 1 1 0 1 2 2 3 3 4 4 5 5 2 6 1 poprawną odpowiedzią jest plik wyjściowy sum0.out: 2 2 4 Pozostałe wierzchołki nie zapewniają istnienia strategii wygrywającej, bo po rozpoczęciu gry dowolną z następujących sekwencji ruchów nie istnieje strategia wygrywająca dla gracza, który ma wykonać następny ruch: 2, 5, 4, 3, 2, 1 1, 2, 5, 4, 3 1, 2, 5 1, 6 |