4153 - Grade3
Cerinţa[edit | edit source]
Se dă lista arcelor unui graf orientat. Să se determine nodurile care au gradul exterior mai mic decât gradul interior.
Date de intrare[edit | edit source]
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[edit | edit source]
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[edit | edit source]
- 1 ≤ n ≤ 100
Exemplu 1[edit | edit source]
- 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[edit | edit source]
- Intrare
101 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 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>