Gra (Game) - International Olympiad in Informatics
Transkrypt
Gra (Game) - International Olympiad in Informatics
InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan game Day-1tasks Language:pl-PL Gra(Game) Jian-Jiajestchłopakiem,któryuwielbiagraćwgry.Zapytanyocoś,zamiastodpowiedzieć bezpośredniowolirozpocząćgręzeswoimrozmówcą.PewnegodniaJian-Jiaspotkałswoją przyjaciółkęMei-YuiopowiedziałjejosiecipołączeńlotniczychnaTajwanie.NaTajwaniejest miastponumerowanych0,..., .Międzyniektórymimiastamiistniejąbezpośredniepołączenia lotnicze.Każdetakiepołączeniejestdwukierunkowe. Mei-Yubyłaciekawa,czyzapomocąsamolotówmożnaprzemieścićsiępomiędzykażdymidwoma miastami(bezpośredniolubpośrednio).Jian-Jianieodpowiedziałnapytanieprzyjaciółki,ale zaproponowałjejpewnągrę.Mei-YumożewniejzadawaćJian-Jiapytaniapostaci„Czyistnieje bezpośredniepołączenielotniczepomiędzymiastami oraz ?".NakażdetakiepytanieJian-Jia natychmiastodpowiada.Mei-Yuzadałącznie pytań,pytającokażdepołączenie dokładnieraz.Mei-Yuzwyciężawgrze,jeślipozadaniu pytań,dlapewnego ,możestwierdzić, czysiećjestspójna,tzn.czydasiępodróżowaćsamolotamipomiędzykażdymidwomamiastami (bezpośredniolubpośrednio).Jeślidostwierdzenia,czysiećjestspójnaczynie,potrzebujeona pytań, wówczaszwycięzcąwgrzejestJian-Jia. ŻebygrabyłaciekawszadlaJian-Jia,jegoprzyjaciółkazgodziłasię,abygranieodnosiłasiędo rzeczywistejsiecilotniczejnaTajwanie.ZamiasttegoJian-Jiamożetworzyćstrukturęsiecinabieżąco wtrakciegry,biorącpoduwagęswojewcześniejszeodpowiedzinapytaniaMei-Yu.Twoimzadaniem jestpomócJian-Jiazwyciężyć,podpowiadającmuodpowiedzinazadawanepytania. Przykłady Regułygryzostanąobjaśnionenatrzechprzykładach.Wkażdymprzykładzieliczbamiastto natomiastliczbarundpytańiodpowiedzito . , Wpierwszymprzykładzie(tabelaponiżej)Jian-Jiaprzegrywa,ponieważporundzie4Mei-Yuwiena pewno,żemożnaprzeleciećsamolotamipomiędzykażdymidwomamiastami,niezależnieod odpowiedziJian-Jianapytania5i6. runda 1 2 3 4 ----5 6 pytanie 0,1 3,0 1,2 0,2 -------3,1 2,3 odpowiedź tak tak nie tak -----nie nie WkolejnymprzykładzieMei-Yumożewykazaćjużpo3rundzie,żeniemożnaprzeleciećsamolotami 1/3 pomiędzymiastami0i1,niezależnieodtego,coJian-Jiaodpowienapytania4,5i6.Jian-Jiaznowu przegrywa. runda 1 2 3 ----4 5 6 pytanie 0,3 2,0 0,1 -------1,2 1,3 2,3 odpowiedź nie nie nie -----tak tak tak WostatnimprzykładzieMei-Yuniemożestwierdzić,czypomiędzykażdymidwomamiastamidasię przelecieć,czynie,ażdomomentu,gdywszystkie6pytańzostaniezadane.Jian-Jiawygrywagrę.Jest takdlatego,gdyżjeśliJian-Jiaodpowietaknaostatniepytanie(patrztabelaponiżej),topodróż samolotamipomiędzykażdąparąmiastjestmożliwa,natomiastjeśliJian-Jiaodpowienienaostatnie pytanie,wówczasistniejeparamiast,pomiędzyktórymipodróżlotniczaniejestmożliwa. runda 1 2 3 4 5 6 pytanie 0,3 1,0 0,2 3,1 1,2 2,3 odpowiedź nie tak nie tak nie tak Zadanie Napiszprogram,którypomożeJian-Jiazwyciężyćwgrze.Zauważ,żeaniMei-Yu,aniJian-Jianie znająstrategiiprzeciwnika.Mei-Yumożepytaćopołączeniapomiędzyparamimiastwdowolnej kolejności,aJian-Jiamusiodpowiadaćnatychmiastnakażdepytanie,nieznająckolejnychpytań. Twojezadaniepoleganazaimplementowaniudwóchnastępującychfunkcji. initialize(n)--Funkcjainitializebędziewywołanajakopierwsza.Parametr oznaczaliczbęmiast. hasEdge(u,v)--Następniebędziewywoływana razyfunkcjahasEdge. TewywołaniareprezentująpytaniaMei-Yuisąwykonywanewkolejnościichzadawania.Na każdeznichnależyodpowiedzieć,czyistniejebezpośredniepołączenielotniczepomiędzy miastami i .Jeślitakiebezpośredniepołączenieistnieje,wówczaswynikiemwywołania funkcjipowinnobyć1,awprzeciwnymprzypadkupowinnotobyć0. Podzadania 2/3 Każdepodzadanieskładasięzpewnejliczbygier.Twójprogramotrzymapunktyzadanepodzadanie, tylkojeśliwimieniuJian-Jiawygrawszystkiegry. podzadanie liczbapunktów 1 15 2 27 3 58 Implementacja Powinieneśzgłosićdokładniejedenplikonazwiegame.c,game.cpplubgame.pas.Wtympliku powinnaznaleźćsięimplementacjafunkcjiopisanychpowyżej,onastępującychsygnaturach. ProgramywC/C++ voidinitialize(intn); inthasEdge(intu,intv); ProgramywPascalu procedureinitialize(n:longint); functionhasEdge(u,v:longint):longint; Przykładowyprogramsprawdzający Przykładowyprogramsprawdzającywczytujedanewnastępującymformacie: wiersz1:n kolejne wierszy:każdywierszzawieradwieliczbycałkowiteuiv,któreopisująpytanie odnoszącesiędomiast i . 3/3