👤

Scrieti un graf care are un parametru x. Functia returneaza pe rand toate lanturie de lungime 2 care pornesc de la nodul x, sub forma de lista de noduri. In fisierul de intrare se citeste lista de muchii a grafului.

Ex:
date.in
1 3
1 5
1 6
2 5
2 6
3 4
3 5
5 6
apelam lant2(1)
date.out
3 4
3 5
5 3
5 6
6 5
6 2


Răspuns :

Răspuns:

Explicație:

def construieste_graf(lista_muchii):

   graf = {}

   for muchie in lista_muchii:

       nod1, nod2 = muchie

       if nod1 not in graf:

           graf[nod1] = []

       if nod2 not in graf:

           graf[nod2] = []

       graf[nod1].append(nod2)

       graf[nod2].append(nod1)

   return graf

def lant2(graf, nod_start):

   lanturi_2 = []

   if nod_start not in graf:

       return lanturi_2

   for vecin in graf[nod_start]:

       for vecin_vecin in graf[vecin]:

           if vecin_vecin != nod_start and vecin_vecin not in graf[nod_start]:

               lanturi_2.append((nod_start, vecin, vecin_vecin))

   return lanturi_2

# Citirea datelor din fișierul de intrare

with open("date.in", "r") as f:

   lista_muchii = [tuple(map(int, linie.split())) for linie in f.readlines()]

graf = construieste_graf(lista_muchii)

# Apelarea funcției și afișarea rezultatelor

nod_start = 1

rezultate = lant2(graf, nod_start)

# Scrierea rezultatelor în fișierul de ieșire

with open("date.out", "w") as f:

   for rezultat in rezultate:

       f.write(" ".join(map(str, rezultat)) + "\n")