Suposem que una celebritat apareix a una festa. En aquesta festa hi ha persones (celebritat inclosa). Cada persona s’identifica amb un nombre entre i .
Què és una celebritat? Una celebritat és algú que no coneix ningú a la festa, però tothom coneix la celebritat.
Suposem que tenim una matriu de booleans, diguem-ne , per determinar si alguna persona coneix alguna altra persona : si la persona coneix la persona . La matriu no té per què ser simètrica (encara que conegui , no té per què passar que conegui ). Anomenarem matriu de coneixences aquesta matriu .
Feu una funció troba_celebritat(M), on
és la matriu de coneixences, que faci servir una pila
per determinar de manera eficient si una celebritat és present
i, si n’hi ha una, identificar qui és aquesta celebritat.
Pista: Fixeu-vos en el següent:
Donats dos i (), si aleshores no pot ser la celebritat
Donats dos i (), si aleshores no pot ser la celebritat
és una matriu de booleans: si la persona coneix la persona . altrament.
Primer ens proporcionen el nombre de convidats a la festa. Després trobem nombres () o () que ens descriuen la matriu de coneixences.
Vegeu els exemples que formen el joc de proves públic.
Cal escriure l’identificador de la celebritat, o
no hi ha celebritat en cas que no hi hagi cap
celebritat.
Vegeu els exemples que formen el joc de proves públic.
Heu de baixar-vos el fitxer code.py
(icona de la serp). Aquest fitxer és un programa amb
tot el que cal per executar els jocs de prova públics.
Només falta, clar, la funció que us demana l’enunciat. Aquest fitxer
l’heu de completar amb el codi que falta, i això, tot,
és el que heu d’enviar al Jutge com a solució.
Si és el nombre de participants a la festa (celebritat inclosa), la funció demanada ha de tenir complexitat . Això no ho pot detectar el Jutge perquè només la lectura de la matriu de coneixences ja té un cost .
L’eficiència i la qualitat de la solució es tindran en compte a la correcció manual. Cap funció amb cost quadràtic serà considerada bona.
Input
3 1 1 0 0 1 0 0 1 1
Output
1
Input
2 1 1 1 1
Output
no hi ha celebritat
Input
1 1
Output
0
Input
4 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1
Output
2
Input
4 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1
Output
1
Input
4 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1
Output
no hi ha celebritat