def algo(pocetak, kraj): ad = Data_Manager() z = ad.dajMiGradove() D = {} P = {} lock = {} open = {} for gradovi in z: D[gradovi] = float('inf') P[gradovi] = "" D[pocetak] = 0 r = z while len(r) > 0: Q = None GRAD = '' for SVEU in r: if Q == None: l = D[SVEU] Q = l GRAD = SVEU elif D[SVEU] < Q: p = D[SVEU] Q = p GRAD = SVEU r.remove(GRAD) removITALL = GRAD W = ad.dajMiSpoj(removITALL) for allIN in W: if allIN[1] == GRAD: intthFirstSpot = allIN[2] inttheLastSpot = allIN[0] xy = GRAD all = D[xy] + inttheLastSpot if D[intthFirstSpot] == float('inf'): D[intthFirstSpot] = all P[intthFirstSpot] = xy elif D[intthFirstSpot] > all: D[intthFirstSpot] = all P[intthFirstSpot] = xy to = [] m = kraj while m != pocetak: if to.count(m) == 0: veliko = m to.insert(0, veliko) node = P[veliko] else: break veratiTOALL = pocetak to.insert(0, pocetak) return (D[kraj], to)
def pocniOdArray( puteljak ): infromacija = Data_Manager() papir = list a = defaultdict( papir ) value = 0 abc = infromacija.pocetakSav() for point in abc: myArray = 0 presliSve = [] putic = [] thisPint = point presliSve.append(thisPint) alpha = point spoj = infromacija.dajMiSpoj(point) heapq.heapify(spoj) while spoj: alphaAll = 0 getInfo = spoj kolikoJeSkupo, PartOne, PartTwo = heapq.heappop(getInfo) if PartTwo not in presliSve: getAllofInfo = PartTwo presliSve.append(getAllofInfo) all_Together = (PartOne, PartTwo, kolikoJeSkupo) putic.append(all_Together) putItBackIn = PartTwo for all in infromacija.dajMiSpoj(putItBackIn): abc = spoj heapq.heappush(abc, all) alphaTo = putic puteljak.append(alphaTo) put_1 = [] put_2 = [] put_3 = [] for all in puteljak: put_1.append(nacrtajSvePuteve(all)) return put_1