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