0577 - AfisCircuite
De la Universitas MediaWiki
Cerința
Se dă lista arcelor unui graf orientat. Să se afișeze, în ordine lexicografică, toate circuitele de lungime trei.
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 nodul i
la nodul j
.
Date de ieșire
Programul va afișa pe ecran circuitele cerute, câte un circuit pe o linie a ecranului, nodurile unui circuit fiind separate prin exact un spațiu.
Restricții și precizări
1 ≤ n ≤ 100
Exemplul 1:
5 7 1 3 2 5 3 2 3 4 4 2 5 4 5 1
Ieșire
2 5 4 4 2 5 5 4 2
Exemplul 2:
101 23
Ieșire
Datele nu corespund restrictiilor impuse
Rezolvare
nMAX = 100
def verifica_restrictii(n):
if 1 <= n <= nMAX:
return True
else:
print("Datele nu corespund restrictiilor impuse.")
return False
def main():
n, m = map(int, input("Introduceti numarul de noduri si muchii: ").split())
# Verificăm dacă `n` respectă restricțiile impuse
if not verifica_restrictii(n):
return
gf = [[False for _ in range(nMAX + 1)] for _ in range(nMAX + 1)]
print("Introduceti muchiile:")
for _ in range(m):
a, b = map(int, input().split())
gf[a][b] = True
for i in range(1, n + 1):
for j in range(1, n + 1):
if gf[i][j]:
for h in range(1, n + 1):
if gf[j][h] and gf[h][i]:
print(f"Triplet gasit: {i} {j} {h}")
if __name__ == "__main__":
main()