Polish version    English version  
  OI books


 News
 About Olympic
 History of OI
 OI books
Publications in English
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2003/2003
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
IV OI 1996/1997
III OI 1995/1996
Where to buy?
Order
PS and PDF files
 National team
 Olympic camps
 Photo gallery
 Links
 SIO
 MAIN
This document is not available in English version.

III Obóz im. A. Kreczmara 2002

Zadanie: sum
Autor: Tomasz Malesiński
Gra w sumowanie

dzień drugi 6 sierpnia 2002

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.

Zadanie

Twoim 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ście

W 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ście

W 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ład

Dla 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



Print friendly version