Čtěte prosím tuto stránku celou a pozorně.
Během noční hry Matrix 2006 bylo nutné splnit následující úkol: Ve Stromovce bylo rozmístěno 13 agentů, každý měl své jméno. Týmy měly na začátku 5 vizitek se jmény. Kdo dal vizitku agentovi s odpovídajícím jménem, mohl si vybrat jinou vizitku podle barvy. Ta odkazovala zase na dalšího agenta. Cílem bylo získat vizitky 3 barev s jménem hlavního (spřáteleného) agenta.
Je potřeba dodat, že pokud jste jednoho agenta opakovaně požádali o vizitku stejné barvy, tak vám pokaždé dal stejnou vizitku (se stejným jménem). Představíme-li si agenty jako vrcholy grafu, pak od každého agenta (s výjimkou hlavního) vedly tři orientované hrany, odpovídající třem různým barvám.Pro úplnost je potřeba znát ještě několik detailů:
Napište program, který prozkoumá síť agentů a najde optimální postup, který by měl být použit v případě, že tým od začátku znal síť agentů. Kritérium pro optimální postup je čas, který je potřeba k doručení všech tří vizitek hlavnímu agentovi. Čas je dán délkou nejdelší trasy. Vzdálenost agentů je možné odhadnout pomocí vzdušné vzdálenosti (lze ji odečíst z mapy).
Použijte Dijkstrův algoritmus pro hledání nejkratší cesty v grafu. Jeho podrobný popis najdete například v učebnicích:
Odkazy na webu:
Vstup je zajištěný pomocí unity Stromovk.pas
. Použití unity by mělo být jasné z komentářů ve zdrojovém kódu.
Výstupem je soubor vystup.txt
, který obsahuje tři řádky se třemi trasami, které vedou k doručení tří různě barevných vizitek hlavnímu agentovi. Na každém řádku je nejprve číslo agenta (ID), které musí odpovídat jedné z pěti vizitek, které měl tým na počátku. Dál následuje seznam barev vizitek, které má hráč postupně chtít po jednotlivých agentech. Barvy jsou kódovány pomocí písmen R
, G
, Y
. Číslo agenta i barvy jsou oddělené mezerou. Na konci řádku může být jedna mezera navíc.
Příklad:
5 R G Y R R G Y 3 R R R G Y G 4 R G G G G R
Ze zadání je jasné, že každý ze tří řádků by měl končit na jiné písmeno. Na pořadí řádků nezáleží.
Příklady souborů s výstupem a soubor
agenti.pas
?
hruska
(zavináč) popelka
(tečka) ms
(tečka) mff
(tečka) cuni
(tečka) cz
s předmětem zprávy PGM - agenti
a s přiloženým souborem agenti.pas
..exe
soubory.
Termín zadání: 15.12.2006.
Termín odevzdání: do 7.1.2007 včetně.
Termín odevzdání oprav: do 31.3.2007 včetně.
hruska
(zavináč) popelka
(tečka) ms
(tečka) mff
(tečka) cuni
(tečka) cz