0575 - Cunoscuti

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Într-un grup sunt n persoane, numerotate de la 1 la n și o persoană poate cunoaște alte persoane – relație care nu este reciprocă. Să se determine persoana cea mai cunoscută.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n de noduri și numărul m de relații dintre persoane, iar apoi m perechi de forma i j, cu semnificația că persoana i cunoaște persoana j.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul de ordine al celei mai cunoscute persoane. Dacă răspunsul constă din mai multe persoane, se vor afișa toate, în ordine crescătoare a numerelor de ordine, separate prin exact un spațiu.

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n ≤ 100

Exemplu 1[edit | edit source]

Intrare
5 8
1 3
1 4
3 2
3 4
4 2
5 2
5 4
5 1
Iesire
Datele de intrare corespund restrictiilor impuse
2 4


Exemplu 2[edit | edit source]

Intrare
104 0
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def verifica_restrictii(n, arce):

   # Verifică dacă datele de intrare respectă restricțiile
   if not (1 <= n <= 100) or not all(1 <= i <= n and 1 <= j <= n for i, j in arce):
       return False
   return True


def persoana_cea_mai_cunoscuta(n, arce):

   # Inițializează gradele interioare ale nodurilor
   grad_interior = [0] * (n + 1)
   # Calculează gradele interioare ale nodurilor
   for _, j in arce:
       grad_interior[j] += 1
   # Determină persoanele cele mai cunoscute
   max_grad = max(grad_interior)
   persoane = [i for i in range(1, n + 1) if grad_interior[i] == max_grad]
   return persoane


def main():

   n, m = map(int, input().split())
   arce = [tuple(map(int, input().split())) for _ in range(m)]
   # Verifică dacă datele de intrare respectă restricțiile
   if not verifica_restrictii(n, arce):
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   print("Datele de intrare corespund restrictiilor impuse")
   # Determină persoanele cele mai cunoscute
   persoane = persoana_cea_mai_cunoscuta(n, arce)
   # Afiseaza rezultatul
   if persoane:
       print(' '.join(map(str, sorted(persoane))))
   else:
       print("NU EXISTA")


if __name__ == "__main__":

   main()


</syntaxhighlight>