Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def vrvz(vr, n): # verific daca exista macar vreun fiu nevizitat
- for i in range(n):
- if vr[i]==0:
- return 1
- return 0
- n = random.randrange(8,13)
- print("numarul de noduri este: ", n)
- print("\n\n")
- v = [0] * n # vector de vizite
- v2 = [0] * n # vector de tati
- radin = random.randint(0,n)
- k1 = n
- v2[radin] = 100
- k1 = k1 - 1
- # in acest while se umple random vectorul de tati
- test = 0
- while k1:
- nivel = random.randint(0, k1-1)
- for i in range(n):
- if v2[i]:
- r = i
- i = random.randint(1, n - 1)
- while nivel != 0:
- while v2[i] != 0 and k1 != 0:
- i = random.randint(1, n - 1)
- v2[i] = r
- nivel = nivel - 1
- k1 = k1 - 1
- if k1 == 1:
- test = test + 1
- if test == 2:
- k1 = 0
- for i in range(n):
- k = random.randint(1, n)
- while k == i:
- k = random.randint(1, n)
- if v2[i] == 0:
- v2[i] = k
- for i in range(n - 1):
- if v2[i] != 100:
- if (v2[i] == v2[i+1]) and (random.randrange(20) % 2) != 0:
- v2[i+1] = i
- v2[radin] = 0
- print("Vectorul random de tati este:\n")
- print(v2)
- r = radin
- t = 0
- df = []
- print("\n")
- # in acest while fac DF continuu
- print("Depth first continuu arata asa:\n")
- while (vrvz(v, n)) and (t < 30):
- ok = 0
- t = t + 1
- df.append(r)
- v[r] = 1
- for i in range(n):
- if (v[i] == 0) and (v2[i] == r):
- r = i
- ok = 1
- i = n + 1
- if not ok:
- r = v2[r]
- if r > n - 1:
- r = r - 1
- while (v2[r] != radin) and (t < 30) and (v2[r] != 0):
- df.append(r)
- r = v2[r]
- t = t + 1
- df.append(r)
- df.append(radin)
- print(df)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement