InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan friend Day-2tasks Language:es-CO Friend Construimosunaredsocialde personasnumeradas0,…, .Algunosparesdepersonasenla redseránamigos.Silapersona sevuelveamigadelapersona ,entoncestambiénlapersona se vuelveamigadelapersona . Seañadegentealareden etapas,lascualestambiénestánnumeradasde a .Lapersona seañadeenlaetapa .Enlaetapa ,seañadelapersona comolaúnicapersonaenlared.Encada unadelassiguientes etapas,seañadeunapersonaalaredporunencargado,elcualpuedeser cualquierpersonaqueyaestéenlared.Enlaetapa ( ),elencargadodeesaetapapuede añadiralaperson entranteenlaredatravésdeunodelossiguientestresprotocolos: IamYourFriendhacequelapersona sevuelvaamigadelencargado. MyFriendsAreYourFriendshacequelapersona seaamigadecadaamigadelhuésped.Note queesteprotocolonohaceque seaamigadelencargado. WeAreYourFriendshacequelapersona seaamigadelencargadoytambiénqueseaamiga decadaamigadelencargado. Despuésdeconstruirlaredquisiéramoselegirunamuestraparaunaencuesta,estoes,elegirungrupo degentedelared.Comolosamigostienengeneralmenteinteresesencomún,lamuestranodebería incluirningúnpardepersonasqueseanamigas,launaconlaotra.Cadapersonatieneunaconfianza paraencuestas,expresadacomounenteropositivoyquisiéramosencontrarunamuestraconla confianzatotalmáximaposible. Ejemplo etapa 1 2 3 4 5 encargado 0 0 1 2 0 protocolo IamYourFriend MyFriendsAreYourFriends WeAreYourFriends MyFriendsAreYourFriends IamYourFriend relacionesdeamistadañadidas (1,0) (2,1) (3,1),(3,0),(3,2) (4,1),(4,3) (5,0) Inicialmentelaredcontieneúnicamentealapersona0.Elencargadodelaetapa1(persona0)invitaa lapersona1atravésdelprotocoloIamYourFriend,porlotantosevuelvenamigas.Elencargadodela etapa2(nuevamentelapersona0)invitaalapersona2conMyFriendsAreYourFriends,locualhace quelapersona1(laúnicaamigadelencargado)sealaúnicaamigadelapersona3.Lapersona encargadadelaetapa3(persona1)añadealapersona3atravésdeWeAreYourFriends,locual hacequelapersona3unaamigadelapersona1(laencargada)ydelaspersonas0y2(lasamigasde laencargada).Lasetapas4y5tambiénsemuestranenlatablaanterior.Laredfinalsemuestraenla siguientefigura,enlacuallosnúmerosdentrodeloscírculosmuestranalaspersonasylosnúmeros 1/3 cercadeloscírculosmuestranlaconfianza.Lamuestraconsistentedelaspersonas3y5tienela confianzatotaliguala20+15=35,elcualeslaconfianzatotalmáximaposible. Tarea Dadaladescripcióndecadaetapaylaconfianzadecadapersona,encontrarunamuestraconla confianzamáximatotal.UstedúnicamentenecesitaimplementarlafunciónfindSample. findSample(n,confidence,host,protocol) n:elnúmerodepersonas. confidence:arreglodetamaño ;confidence[i]dalaconfianzadelapersona . host:arreglodelongitud ;host[i]daelencargadodelaetpa . protocol:arreglodelongitud ;protocol[i]daelcódigodeprotocolousadoenla etapa ( ):0paraIamYourFriend,1paraMyFriendsAreYourFriendsy2para WeAreYourFriends. Comonohayencargadoenlaetapa0,host[0]yprotocol[0]estánindefinidosyno deberìanseraccesadosporsuprograma. Lafuncióndebedevolverlaconfianzatotalmáximaposibleparaunamuestra. Subtareas Algunassubtareasusanúnicamenteunsubconjuntodeprotocolos,comosemuestraenlasiguiente tabla. subtarea puntos 1 11 2 8 3 4 8 19 5 23 6 31 confianza Todaslasconfianzas1 protocolosusados Todoslostresprotocolos Solo MyFriendsAreYourFriends SoloWeAreYourFriends SoloIamYourFriend Ambos MyFriendsAreYourFriendsy IamYourFriend Todoslostresprotocolos 2/3 Detallesdeimplementación Ustedtienequeenviarexactamenteunarchivo,llamadofriend.c,friend.cppofriend.pas. Estearchivodebeimplementarelsubprogramadescritoanteriormente,usandolossiguientes prototipos.Ustedtambiéndebeincluirunarchivodeencabezadofriend.hparaimplementaciónen C/C++. ProgramasC/C++ intfindSample(intn,intconfidence[],inthost[],intprotocol[]); ProgramasPascal functionfindSample(n:longint,confidence:arrayoflongint,host:array oflongint;protocol:arrayoflongint):longint; Calificadorejemplo Elcalificadorejemploleelaentradaenelsiguienteformato: línea1:n línea2:confidence[0],...,confidence[n-1] línea3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1] ElcalificadorejemploimprimiráelvalordevueltodefindSample. 3/3