Risk

A Risk egy táblás játék, amelyben több játékos tesz kísérletet a világ meghódítására. A játéktábla egy képzeletbeli világtérkép, amely országokra van osztva. A játékosok lépéseik során hadseregeket helyeznek át valamely országból egy ezzel szomszédos országba. Ezt a tevékenységet az ország meghódításának nevezzük. A játék menete során valamennyi játékosnak az a célja, hogy hadseregével egy startországból valamely célországba jusson. Ehhez hódítások sorozatát kell végrehajtania. A játékos célja a közbülső országok megválasztása úgy, hogy a szükséges hódítások száma minimális legyen. Adott egy 20 országból álló játéktábla leírása; az országokat az első 20 pozitív egész számmal azonosítjuk. Írjunk programot, amely adott start- és cél-országokhoz kiszámítja a meghódítandó országok minimális számát. A programnak nem szükséges kiíratnia az országok azonosítóit, csak az elfoglalandó országok számát, beleértve a célállomást is. Például, ha a start és célországok szomszédosak, akkor a helyes válasz 1.

Bemenet:

Az INPUT.TXT fájl a játéktáblák sorozatának leírásait tartalmazza. Egy játéktábla leírása 19 sorból áll. A leírás i és j azonosítójú országok szomszédságát csak akkor tartalmazza, ha i<j, ezáltal elkerüli a szomszédság kétszeri kódolását. A leírás i-edik sora (1<=i<=19) egy m egész számmal kezdődik; ez azt mutatja, hogy az i azonosítójú ország hány nagyobb azonosítójú országgal szomszédos. Ezután a sor még pontosan m darab számot tartalmaz; az i-vel szomszédos, i-nél nagyobb azonosítójú országok azonosítóit. A leírás 20. sora egyetlen N egész számot tartalmaz (1<=N<=100), amely az ezután felsorolandó országpárok számát jelöli. A következő N sor mindegyike pontosan két egész számot tartalmaz, az első jelöli a start, a második a célország azonosítóját a lehetséges játékban. Az országok közt minden esetben lesz legalább egy út. Az inpufájl több tábla leírását is tartalmazhatja. A programnak minden táblára, azon belül minden start és célországra meg kell határoznia a hódítandó országok minimális számát.

Kimenet:

Írjuk az eredményeket az OUTPUT.TXT nevű állományba! Az egyes játéktáblához tartozó eredmények felsorolását előzze meg egy "Teszt #T" alakú sor, ahol T az aktuális tábla sorszáma, amely kezdetben 1. Az ezt követő Nt sor mindegyike kövesse a "start: i cél: j, lépések: k" formátumot, ahol i illetve j az aktuális start- és célországok, k pedig a meghódítandó országok minimális száma. Az egyes játéktáblákhoz tartozó eredményeket egy üres sorral kell lezárni.

Példa:

INPUT.TXT

OUTPUT.TXT

1 3
2 3 4
3 4 5 6
1 6
1 7
2 12 13
1 8
2 9 10
1 11
1 11
2 12 17
1 14
2 14 15
2 15 16
1 16
1 19
2 18 19
1 20
1 20
5
1 20
2 9
19 5
18 19
16 20
4 2 3 5 6
1 4
3 4 10 5
5 10 11 12 19 18
2 6 7
2 7 8
2 9 10
1 9
1 10
2 11 14
3 12 13 14
3 18 17 13
4 14 15 16 17
0
0
0
2 18 20
1 19
1 20
6
1 20
8 20
15 16
11 4
7 13
2 16

Teszt #1
start
: 1 cél: 20 lépések: 7

start: 2 cél: 9 lépések: 5
start: 19 cél: 5 lépések: 6
start: 18 cél: 19 lépések: 2
start: 16 cél: 20 lépések: 2

Teszt #2
start
: 1 cél: 20 lépések: 4

start: 8 cél: 20 lépések: 5
start: 15 cél: 16 lépések: 2
start: 11 cél: 4 lépések: 1
start: 7 cél: 13 lépések: 3
start: 2 cél: 16 lépések: 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(ACM regionális verseny 1997)