0577 - AfisCircuite
Cerința[edit | edit source]
Se dă lista arcelor unui graf orientat. Să se afișeze, în ordine lexicografică, toate circuitele de lungime trei.
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 nodul i
la nodul j
.
Date de ieșire[edit | edit source]
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[edit | edit source]
1 ≤ n ≤ 100
Exemplul 1:[edit | edit source]
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:[edit | edit source]
101 23
Ieșire
Datele nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> 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()
</syntaxhighlight>