0577 - AfisCircuite

De la Universitas MediaWiki
Versiunea din 24 februarie 2024 07:20, autor: Aurelia Raluca (discuție | contribuții) (Pagină nouă: = 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 <code>n</code> de noduri și numărul <code>m</code> de arce, iar apoi lista arcelor, formată din <code>m</code> perechi de forma <code>i j</code>, cu semnificația că există arc orientat de la nodul <code>i</code> la nodul <code>j</code>. = Date de ieșire = Programul va afi...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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()