제출 #1212331

#제출 시각아이디문제언어결과실행 시간메모리
1212331ackerman2840Robot (JOI21_ho_t4)Pypy 3
0 / 100
766 ms191148 KiB
from heapq import heappush, heappop

n, m = map(int, input().split())

adj = [[] for _ in range(n)]
color_count = [{} for _ in range(n)]  # Count of each color at each node

edges = []

for _ in range(m):
    a, b, c, p = map(int, input().split())
    a -= 1
    b -= 1
    adj[a].append((b, c, p))
    adj[b].append((a, c, p))
    edges.append((a, b, c, p))
    color_count[a][c] = color_count[a].get(c, 0) + 1
    color_count[b][c] = color_count[b].get(c, 0) + 1

dist = [float('inf')] * n
dist[0] = 0

pq = [(0, 0)]

while pq:
    cost_u, u = heappop(pq)
    if dist[u] < cost_u:
        continue
    for v, c, p in adj[u]:
        # If the color is unique at u, we can use the edge at 0 cost
        if color_count[u][c] == 1:
            new_cost = cost_u
        else:
            # Otherwise, we must pay p to recolor
            new_cost = cost_u + p
        if new_cost < dist[v]:
            dist[v] = new_cost
            heappush(pq, (new_cost, v))

print(-1 if dist[n - 1] == float('inf') else dist[n - 1])

컴파일 시 표준 출력 (stdout) 메시지

Compiling 'Main.py'...

=======
  adding: __main__.pyc (deflated 40%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...