結果

問題 No.3653 Space-Time Courier
コンテスト
ユーザー gomaazarasi
提出日時 2026-07-24 19:27:39
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
TLE  
実行時間 -
コード長 1,577 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 284 ms
コンパイル使用メモリ 96,360 KB
実行使用メモリ 326,696 KB
最終ジャッジ日時 2026-08-28 21:09:15
合計ジャッジ時間 7,042 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other TLE * 1 -- * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from heapq import heappush,heappop


n,m = list(map(int,input().split()))
P = list(map(int,input().split()))

if m == 0:
    print(-1)
    exit()

uv = [[] for i in range(n)]
p = [10**14 for i in range(n)]
s = [[10**18 for i in range(n)] for i in range(n)]
p[0] = 0

for i in range(m):
    u,v,c = list(map(int,input().split()))
    u,v = u-1,v-1
    uv[u].append([v,c])

change = [0 for i in range(n)]
change[0] = 1

for _ in range(n):
    for u in range(n):
        if change[u] == 0:
            continue
        change[u] = 0
        for v,c in uv[u]:
            if p[v] > p[u]+c:
                change[v] = 1
                p[v] = min(p[v],p[u]+c)

for i in range(n):
    for u in range(len(uv[i])):
        uv[i][u][1] += p[i] - p[uv[i][u][0]]

for i in range(n):
    pq = [0]
    d = {0:[i]}
    s[i][i] = 0
    
    while len(pq):
        w = heappop(pq)
        
        while len(d[w]):
            u = d[w].pop()
            
            if s[i][u] < w:
                continue
            
            for v,c in uv[u]:
                if s[i][v] <= w+c:
                    continue
                if w+c not in d:
                    heappush(pq,w+c)
                    d[w+c] = []
                s[i][v] = w+c
                d[w+c].append(v)

c = 10**18

for i in range(n):
    for u in range(n):
        if i == u:
            continue
        s[i][u] += p[u]-p[i]+P[i]+P[u]
        c = min(c,s[i][u])

ans = 0

for i in range(n):
    for u in range(n):
        if i == u:
            continue
        if s[i][u] == c:
            ans += 1

print(c,ans)
0