0577 - AfisCircuite

From Bitnami MediaWiki
Revision as of 07:20, 24 February 2024 by Aurelia Raluca (talk | contribs) (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...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>