結果
問題 | No.1301 Strange Graph Shortest Path |
ユーザー | proribone |
提出日時 | 2020-11-27 22:52:15 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 958 bytes |
コンパイル時間 | 486 ms |
コンパイル使用メモリ | 82,240 KB |
実行使用メモリ | 129,704 KB |
最終ジャッジ日時 | 2024-07-26 20:07:14 |
合計ジャッジ時間 | 26,069 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 41 ms
53,008 KB |
testcase_01 | AC | 41 ms
54,572 KB |
testcase_02 | WA | - |
testcase_03 | AC | 626 ms
105,344 KB |
testcase_04 | AC | 822 ms
126,912 KB |
testcase_05 | AC | 565 ms
105,660 KB |
testcase_06 | AC | 742 ms
121,832 KB |
testcase_07 | AC | 718 ms
115,408 KB |
testcase_08 | AC | 582 ms
105,396 KB |
testcase_09 | AC | 723 ms
117,940 KB |
testcase_10 | WA | - |
testcase_11 | AC | 820 ms
121,380 KB |
testcase_12 | AC | 858 ms
123,392 KB |
testcase_13 | AC | 714 ms
110,012 KB |
testcase_14 | AC | 776 ms
116,892 KB |
testcase_15 | AC | 696 ms
113,604 KB |
testcase_16 | AC | 880 ms
128,140 KB |
testcase_17 | AC | 784 ms
113,668 KB |
testcase_18 | AC | 747 ms
110,652 KB |
testcase_19 | AC | 825 ms
123,040 KB |
testcase_20 | AC | 784 ms
123,648 KB |
testcase_21 | AC | 736 ms
115,192 KB |
testcase_22 | AC | 790 ms
126,740 KB |
testcase_23 | AC | 757 ms
111,248 KB |
testcase_24 | AC | 850 ms
125,244 KB |
testcase_25 | AC | 846 ms
123,812 KB |
testcase_26 | AC | 785 ms
117,336 KB |
testcase_27 | AC | 778 ms
121,040 KB |
testcase_28 | AC | 637 ms
106,932 KB |
testcase_29 | WA | - |
testcase_30 | AC | 837 ms
122,776 KB |
testcase_31 | AC | 849 ms
125,140 KB |
testcase_32 | WA | - |
testcase_33 | RE | - |
testcase_34 | RE | - |
ソースコード
from heapq import heappush,heappop,heapify INF=float('inf') def dijkstra(G,s,n): que=[(0,s)] dist=[INF]*n last=[-1 for i in range(n)] dist[s]=0 while que: mincost,u=heappop(que) if(mincost>dist[u]): continue for v,c in G[u].items(): if(dist[u]+c<dist[v]): dist[v]=dist[u]+c last[v]=u heappush(que,(dist[v],v)) return dist,last def update(v): if last[v]==-1: return a,b=v,last[v] if a>b: a,b=b,a G[v][last[v]]=nextc[(a,b)] G[last[v]][v]=nextc[(a,b)] update(last[v]) N,M=map(int,input().split()) G=[{} for _ in range(N)] nextc={} for _ in range(M): u,v,c,d=map(int,input().split()) u-=1 v-=1 if u>v: v,u=u,v G[u][v]=c G[v][u]=c nextc[(u,v)]=d dist,last=dijkstra(G,0,N) ans=dist[-1] update(N-1) dist,last=dijkstra(G,N-1,N) ans+=dist[0] print(ans)