Submission #26791319
Source Code Expand
inf = float('inf')
class BellmanFord():
def __init__(self, N):
self.N = N
self.edges = []
def add(self, u, v, d, directed=False):
"""
u = from, v = to, d = cost
directed = Trueのとき、有向グラフである。
"""
if directed is False:
self.edges.append([u, v, d])
self.edges.append([v, u, d])
else:
self.edges.append([u, v, d])
def BellmanFord_search(self, start):
"""
:param s: 始点
:return: d[i] 始点sから各点iまでの最短経路
"""
# infならたどり着けず
# -infなら"通りたいパスに"負の閉路が存在する
D = [inf for i in range(self.N)]
D[start] = 0
for i in range(self.N*2):
for u,v,d in self.edges:
if D[v] > D[u] + d:
D[v] = D[u] + d
#2巡目負経路が存在する場合の動き
if i>=self.N:
D[v]=-inf
return D
N,M,P = map(int, input().split())
ABC = [list(map(int, input().split())) for _ in range(M)]
graph = BellmanFord(N)
for a,b,c in ABC:
a -= 1
b -= 1
graph.add(a,b,P-c,True)
d = graph.BellmanFord_search(0)
if d[N-1]==-inf:
print(-1)
else:
print(max(0,-d[N-1]))
Submission Info
| Submission Time | |
|---|---|
| Task | E - Coins Respawn |
| User | H20 |
| Language | PyPy3 (7.3.0) |
| Score | 500 |
| Code Size | 1401 Byte |
| Status | AC |
| Exec Time | 1033 ms |
| Memory | 76320 KiB |
Judge Result
| Set Name | Sample | All | after_contest | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | 0 / 0 | ||||||
| Status |
|
|
|
| Set Name | Test Cases |
|---|---|
| Sample | a01, a02, a03 |
| All | a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49, b50, b51, b52, b53, b54, b55, b56 |
| after_contest | after_contest_57, after_contest_58, after_contest_59 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| a01 | AC | 66 ms | 61988 KiB |
| a02 | AC | 50 ms | 61940 KiB |
| a03 | AC | 51 ms | 62244 KiB |
| after_contest_57 | AC | 370 ms | 76040 KiB |
| after_contest_58 | AC | 370 ms | 75848 KiB |
| after_contest_59 | AC | 370 ms | 75812 KiB |
| b04 | AC | 45 ms | 62000 KiB |
| b05 | AC | 52 ms | 62284 KiB |
| b06 | AC | 52 ms | 62160 KiB |
| b07 | AC | 49 ms | 62024 KiB |
| b08 | AC | 49 ms | 62244 KiB |
| b09 | AC | 371 ms | 75852 KiB |
| b10 | AC | 370 ms | 75812 KiB |
| b11 | AC | 330 ms | 75848 KiB |
| b12 | AC | 321 ms | 75824 KiB |
| b13 | AC | 308 ms | 75864 KiB |
| b14 | AC | 378 ms | 75720 KiB |
| b15 | AC | 95 ms | 75056 KiB |
| b16 | AC | 99 ms | 75360 KiB |
| b17 | AC | 96 ms | 74868 KiB |
| b18 | AC | 368 ms | 76012 KiB |
| b19 | AC | 368 ms | 75996 KiB |
| b20 | AC | 370 ms | 75868 KiB |
| b21 | AC | 335 ms | 76012 KiB |
| b22 | AC | 243 ms | 75756 KiB |
| b23 | AC | 337 ms | 75884 KiB |
| b24 | AC | 248 ms | 75852 KiB |
| b25 | AC | 52 ms | 65556 KiB |
| b26 | AC | 818 ms | 76036 KiB |
| b27 | AC | 1033 ms | 76052 KiB |
| b28 | AC | 829 ms | 76104 KiB |
| b29 | AC | 622 ms | 76072 KiB |
| b30 | AC | 724 ms | 76084 KiB |
| b31 | AC | 617 ms | 76116 KiB |
| b32 | AC | 816 ms | 76056 KiB |
| b33 | AC | 829 ms | 75884 KiB |
| b34 | AC | 814 ms | 76224 KiB |
| b35 | AC | 819 ms | 75864 KiB |
| b36 | AC | 655 ms | 76040 KiB |
| b37 | AC | 835 ms | 76096 KiB |
| b38 | AC | 654 ms | 76192 KiB |
| b39 | AC | 824 ms | 75848 KiB |
| b40 | AC | 662 ms | 76052 KiB |
| b41 | AC | 819 ms | 76248 KiB |
| b42 | AC | 656 ms | 76084 KiB |
| b43 | AC | 733 ms | 76268 KiB |
| b44 | AC | 734 ms | 76120 KiB |
| b45 | AC | 713 ms | 76236 KiB |
| b46 | AC | 738 ms | 76320 KiB |
| b47 | AC | 418 ms | 76052 KiB |
| b48 | AC | 426 ms | 75828 KiB |
| b49 | AC | 368 ms | 75816 KiB |
| b50 | AC | 319 ms | 75808 KiB |
| b51 | AC | 371 ms | 75908 KiB |
| b52 | AC | 329 ms | 75716 KiB |
| b53 | AC | 333 ms | 76068 KiB |
| b54 | AC | 393 ms | 75956 KiB |
| b55 | AC | 656 ms | 76012 KiB |
| b56 | AC | 670 ms | 76000 KiB |