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
AC × 3
AC × 56
AC × 3
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