結果

問題 No.2630 Colorful Vertices and Cheapest Paths
ユーザー anonymouslyanonymously
提出日時 2024-02-16 23:39:41
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
実行時間 -
コード長 955 bytes
コンパイル時間 86 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 19,492 KB
最終ジャッジ日時 2024-09-28 22:41:47
合計ジャッジ時間 7,601 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

n,m=map(int,input().split())
G=[[] for i in range(n)]
E=[(int(a)-1,int(b)-1) for a,b in (input().split() for i in range(m))]
for a,b in E:
    G[a].append(b)
    G[b].append(a)
C=[int(_)-1 for _ in input().split()]
W=[int(_) for _ in input().split()]

def func(start,goal):
    import heapq
    from math import inf
    dist=[inf]*n
    dist[start]=W[C[start]]
    Q=[]
    heapq.heappush(Q,(dist[start],start,[i==C[start] for i in range(10)]))
    while Q:
        d,v,visited=heapq.heappop(Q)
        if v==goal:
            return dist[v]
        if d>dist[v]:
            continue
        for u in G[v]:
            d2=dist[v]+(0 if visited[C[u]] else W[C[u]])
            if d2<dist[u]:
                dist[u]=d2
                heapq.heappush(Q,(dist[u],u,[True if i==C[u] else visited[i] for i in range(10)]))
    return -1

print(*list(map(lambda v:func(*v),[tuple(map(lambda x:int(x)-1,input().split())) for q in range(int(input()))])),sep='\n')
0