3450 - gegik
Cerinţa
Se dă un graf orientat cu n vârfuri și m arce prin lista arcelor și un număr natural k. Afișați vârfurile din graf care au suma gradelor (interior și exterior) egală cu k.
Date de intrare
Programul citește de la tastatură numărul n de noduri și numărul m de arce și un număr k. Apoi se citește lista arcelor, formată din m perechi de forma i j, cu semnificația că există arc de la nodul i la nodul j.
Date de ieșire
Programul va afișa pe ecran în ordine crescătoare și separate printr-un spațiu vârfurile care au suma gradelor (interior și exterior) egală cu k. Dacă nu există astfel de vârfuri, atunci programul va afișa Nu exista.
Restricţii şi precizări
- 1 ≤ n ≤ 100
Exemplu 1
- Intrare
7 10 3 1 2 1 3 1 4 1 5 2 5 5 1 3 4 4 3 4 6 4 7
- Iesire
Datele de intrare corespund restrictiilor impuse 3 5
Exemplu 2
- Intrare
103 0 0
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Explicatie
Vârfurile 3 și 5 au suma gradelor egală cu 3.
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_suma_k(n, arce, k):
# 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 suma gradelor egală cu k noduri = [i for i in range(1, n + 1) if grad_interior[i] + grad_exterior[i] == k]
return noduri
def main():
n, m, k = 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 suma gradelor egală cu k noduri = noduri_grad_suma_k(n, arce, k)
# Afiseaza rezultatul if noduri: print(' '.join(map(str, sorted(noduri)))) else: print("NU EXISTA")
if __name__ == "__main__":
main()
</syntaxhighlight>