4153 - Grade3
Cerinţa
Se dă lista arcelor unui graf orientat. Să se determine nodurile care au gradul exterior mai mic decât gradul interior.
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 numărul C, reprezentând numărul de noduri care au gradul exterior mai mic decât cel interior, iar pe linie următoare afișează aceste noduri, ordonate crescător, separate prin exact un spațiu.
Restricţii şi precizări
- 1 ≤ n ≤ 100
Exemplu 1
- Intrare
6 9 1 2 1 3 1 5 3 5 4 1 3 4 5 1 6 1 6 3
- Iesire
Datele de intrare corespund restrictiilor impuse 2 2 5
Exemplu 2
- Intrare
101 0
- 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_exterior_mic(n, arce):
# Inițializează gradele interioare și exterioare ale nodurilor grad_interior = [0] * (n + 1) grad_exterior = [0] * (n + 1)
# Calculează gradele interioare și exterioare ale nodurilor for i, j in arce: grad_exterior[i] += 1 grad_interior[j] += 1
# Determină nodurile care au gradul exterior mai mic decât gradul interior noduri = [i for i in range(1, n + 1) if grad_exterior[i] < grad_interior[i]]
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 exterior mai mic decât gradul interior noduri = noduri_grad_exterior_mic(n, arce)
# Afiseaza rezultatul print(len(noduri)) print(' '.join(map(str, sorted(noduri))))
if __name__ == "__main__":
main()
</syntaxhighlight>