Pagini recente » Cod sursa (job #77744) | Cod sursa (job #517485) | Cod sursa (job #3299910) | Cod sursa (job #3349584) | Cod sursa (job #3354651)
import heapq
with open("distante.in", "r") as f, open("distante.out", "w") as g:
t = int(f.readline().strip())
for _ in range(t):
n, m, src = map(int, f.readline().split())
initial = list(map(int, f.readline().split()))
adj = [[] for _ in range(n + 1)]
for _ in range(m):
x, y, cost = map(int, f.readline().split())
adj[x].append((y, cost))
adj[y].append((x, cost))
INF = 10**18
dist = [INF] * (n + 1)
dist[src] = 0
pq = [(0, src)]
while pq:
d, u = heapq.heappop(pq)
if d != dist[u]:
continue
for v, c in adj[u]:
if dist[u] + c < dist[v]:
dist[v] = dist[u] + c
heapq.heappush(pq, (dist[v], v))
if dist[1:] != initial:
g.write("NU\n")
else:
g.write("DA\n")