結果
| 問題 | No.3564 Awkward Timing |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-04 08:33:45 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 883 ms / 2,000 ms |
| コード長 | 1,226 bytes |
| 記録 | |
| コンパイル時間 | 509 ms |
| コンパイル使用メモリ | 85,504 KB |
| 実行使用メモリ | 188,968 KB |
| 最終ジャッジ日時 | 2026-06-04 08:34:26 |
| 合計ジャッジ時間 | 39,465 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_1 |
| 純コード判定待ち |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 40 % | AC * 38 |
| 満点 | 60 % | AC * 62 |
| 合計 | 100 点 |
ソースコード
import sys, heapq
def gcd(a, b):
while b:
a, b = b, a % b
return a
def solve():
it = iter(sys.stdin.buffer.read().split())
n = int(next(it))
m = int(next(it))
k = int(next(it))
g = []
for _ in range(n + 1):
g.append([])
e = []
for _ in range(m):
u = int(next(it))
v = int(next(it))
t = int(next(it))
g[u].append((v, t))
g[v].append((u, t))
e.append((u, v, t))
INF = 10 ** 30
d = [INF] * (n + 1)
d[1] = 0
que = [(0, 1)]
while que:
cur, v = heapq.heappop(que)
if cur > d[v]:
continue
for j in range(len(g[v])):
u = g[v][j][0]
t = g[v][j][1]
nxt = cur + t
if nxt < d[u]:
d[u] = nxt
heapq.heappush(que, (nxt, u))
gd = 0
for i in range(len(e)):
u = e[i][0]
v = e[i][1]
t = e[i][2]
if d[u] != INF:
gd = gcd(gd, abs(d[u] + t - d[v]))
if d[v] != INF:
gd = gcd(gd, abs(d[v] + t - d[u]))
if gd == 0:
ans = d[n] % k
else:
ans = d[n] % gcd(gd, k)
print(ans)
if __name__ == '__main__':
solve()