Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import os
- if not os.environ.get("ONLINE_JUDGE"):
- sys.stdin = open('./in.txt', 'r')
- sys.stdout = open('./out.txt', 'w')
- inf = sys.maxsize
- class Graph():
- def __init__(self, v):
- self.V = v
- self.graph = [[0 for _ in range(v)] for _ in range(v)]
- def mindist(self, dist, dist_set):
- min = sys.maxsize
- min_index = -1
- for v in range(self.V):
- if dist[v] < min and dist_set[v] == False:
- min = dist[v]
- min_index = v
- return min_index
- def dijkstra(self, src, T):
- dist = [sys.maxsize] * self.V
- dist[src] = 0
- dist_set = [False] * self.V
- for node in range(self.V):
- u = self.mindist(dist, dist_set)
- dist_set[u] = True
- for v in range(self.V):
- if self.graph[u][v] > 0 and dist_set[v] == False and dist[v] > dist[u] + self.graph[u][v]:
- dist[v] = dist[u] + self.graph[u][v]
- return dist[T]
- for N in range(int(input())):
- n, m, S, T = map(int, input().split())
- g = Graph(n)
- for _ in range(m):
- u, v, c = map(int, input().split())
- g.graph[u][v] = c
- g.graph[v][u] = c
- ans = g.dijkstra(S, T)
- if ans == inf:
- print(f"Case #{N+1}: unreachable")
- else:
- print(f"Case #{N+1}: {ans}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement