Cod sursa(job #2645299)

Utilizator CezarTDTodirisca Cezar CezarTD Data 27 august 2020 18:17:12
Problema Algoritmul lui Dijkstra Scor 50
Compilator py Status done
Runda Arhiva educationala Marime 1.27 kb
import heapq

edges = []
with open("dijkstra.in") as file:
    n, m = [int(x) for x in next(file).split()]
    
    for i in range(n+1):
        edges.append([])
    
    for line in file.readlines():
        nums = line.split()
        
        edges[int(nums[0])].append((int(nums[1]),int(nums[2])))      


def calculate_distances():
    dist = [float("infinity") for i in range(n+1)]
    dist[startVertex] = 0
    
    priorityQ = [(0, startVertex)]
    while len(priorityQ):
        currentDistance, currentVertex = heapq.heappop(priorityQ)
        
        if currentDistance > dist[currentVertex]:
            continue
        
        for neighbour, weight in edges[currentVertex]:
            distance = currentDistance + weight
            
            if distance < dist[neighbour]:
                dist[neighbour] = distance
                heapq.heappush(priorityQ, (distance, neighbour))
    
    with open("dijkstra.out","w") as file:
        for i in range(2, n):
            if dist[i] != float("infinity"):
                file.write("{} ".format(dist[i]))
            else:
                file.write("0 ")
    
    # for i in range(2,n+1):
    #     print(dist[i],end=' ')


n=len(edges)
startVertex = 1

calculate_distances()