3450 - gegik
Cerinţa[edit | edit source]
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[edit | edit source]
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[edit | edit source]
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[edit | edit source]
- 1 ≤ n ≤ 100
Exemplu 1[edit | edit source]
- 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[edit | edit source]
- Intrare
103 0 0
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Explicatie[edit | edit source]
Vârfurile 3 și 5 au suma gradelor egală cu 3.
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_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>