結果
| 問題 | No.3564 Awkward Timing |
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2026-05-31 05:24:28 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,654 bytes |
| 記録 | |
| コンパイル時間 | 308 ms |
| コンパイル使用メモリ | 85,288 KB |
| 実行使用メモリ | 233,652 KB |
| 最終ジャッジ日時 | 2026-05-31 05:25:03 |
| 合計ジャッジ時間 | 33,355 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 40 % | AC * 32 WA * 6 |
| 満点 | 60 % | AC * 53 WA * 9 |
| 合計 | 0 点 |
ソースコード
from sys import stdin
input = stdin.readline
from heapq import heappush, heappop
from math import gcd
from types import GeneratorType
def bootstrap(f, stack=[]):
def wrappedfunc(*args, **kwargs):
if stack:
return f(*args, **kwargs)
to = f(*args, **kwargs)
while True:
if type(to) is GeneratorType:
stack.append(to)
to = next(to)
else:
stack.pop()
if not stack:
break
to = stack[-1].send(to)
return to
return wrappedfunc
@bootstrap
def dfs(n, p):
for v, c in G[n]:
base.append(c*2)
if v == p: continue
if dist[v] == -1:
dist[v] = dist[n]+c
yield dfs(v, n)
elif dist[v] < dist[n]:
res = dist[n]-dist[v]+c
base.append(res)
yield
N, M, K = map(int, input().split())
G = [[] for _ in range(N)]
for _ in range(M):
u, v, c = map(int, input().split())
u, v = u-1, v-1
G[u].append((v, c))
G[v].append((u, c))
dist = [-1]*N
dist[0] = 0
base = []
dfs(0, -1)
def dijkstra(start):
INF = 10**18
dist = [INF]*N
dist[start] = 0
visited = [False]*N
que = [(0, start)]
while que:
d, now = heappop(que)
if visited[now]:
continue
visited[now] = True
for next, weight in G[now]:
if dist[now]+weight < dist[next]:
dist[next] = dist[now]+weight
heappush(que, (dist[next], next))
return dist
dist = dijkstra(0)
GCD = 0
for b in base:
GCD = gcd(GCD, b)
print(dist[-1]%GCD)
detteiuu