結果
問題 | No.1393 Median of Walk |
ユーザー |
|
提出日時 | 2020-11-12 22:54:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 450 ms / 2,000 ms |
コード長 | 1,304 bytes |
コンパイル時間 | 184 ms |
コンパイル使用メモリ | 82,568 KB |
実行使用メモリ | 79,360 KB |
最終ジャッジ日時 | 2024-07-19 22:41:51 |
合計ジャッジ時間 | 11,896 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
ソースコード
n,m = map(int,input().split())edge = [[] for i in range(n)]edge_cost = {}edge_weight = []for i in range(m):u,v,w = map(int,input().split())edge[u-1].append(v-1)edge_cost[u-1,v-1] = 1edge_weight.append((u-1,v-1,w))dist = [10**18 for i in range(n)]ans = [-1 for i in range(n)]dist[0] = 0def dfs(s,w):que = [s]while que:v = que.pop()for nv in edge[v]:if dist[v]!=-10**18:if dist[nv] > dist[v] + edge_cost[v,nv]:dist[nv] = dist[v] + edge_cost[v,nv]if dist[nv] < -n:dist[nv] = -10**18if dist[nv]<=0 and ans[nv]==-1:ans[nv] = wque.append(nv)else:if dist[nv]!=-10**18:dist[nv] = -10**18if ans[nv]==-1:ans[nv] = wque.append(nv)dfs(0,-1)edge_weight.sort(key = lambda x:x[2])for u,v,w in edge_weight:edge_cost[u,v] = -1if dist[v] > dist[u] + edge_cost[u,v]:dist[v] = dist[u] + edge_cost[u,v]if dist[v] < -n:dist[v] = -10**18if dist[v]<=0 and ans[v]==-1:ans[v] = wdfs(v,w)print(*ans[1:],sep="\n")