Cod sursa(job #2645912)

Utilizator CezarTDTodirisca Cezar CezarTD Data 30 august 2020 00:34:27
Problema Algoritmul lui Dijkstra Scor 60
Compilator py Status done
Runda Arhiva educationala Marime 1.24 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([])
    edges = tuple(edges)
    for i in range(m):
        line = file.readline()
        nums = line.split()
        edges[int(nums[0])].append((int(nums[1]),int(nums[2])))      
        del nums
        del line
	
del file
def calculate_distances():
    dist = [1000000000 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[2] != 1000000000:
                file.write("{} ".format(dist[2]))
            else:	
                file.write("0 ")
            del dist[2]
        del file
n=len(edges)
startVertex = 1
calculate_distances()