0586 - GradIntNul

From Bitnami MediaWiki

Cerinţa

Se dă lista arcelor unui graf orientat. Să se determine nodurile care au gradul interior nul.

Date de intrare

Programul citește de la tastatură numărul n de noduri și numărul m de arce, iar apoi lista arcelor, formată din m perechi de forma i j, cu semnificația că există arc orientat de la i la j.

Date de ieșire

Programul va afișa pe ecran nodurile cu gradul interior nul, ordonate crescător și separate prin exact un spațiu. Dacă nu există nici un nod cu gradul interior nul, se va afișa mesajul NU EXISTA.

Restricţii şi precizări

  • 1 ≤ n ≤ 100

Exemplu 1

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


Exemplu 2

Intrare
5 1
1 6
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

<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 noduri_grad_interior_nul(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ă nodurile care au gradul interior nul
   noduri = [i for i in range(1, n + 1) if grad_interior[i] == 0]
   return noduri


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ă nodurile care au gradul interior nul
   noduri = noduri_grad_interior_nul(n, arce)
   # Afiseaza rezultatul
   if noduri:
       print(' '.join(map(str, sorted(noduri))))
   else:
       print("NU EXISTA")


if __name__ == "__main__":

   main()


</syntaxhighlight>