結果
問題 | No.1393 Median of Walk |
ユーザー |
![]() |
提出日時 | 2020-11-13 08:51:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,175 ms / 2,000 ms |
コード長 | 1,485 bytes |
コンパイル時間 | 233 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 257,448 KB |
最終ジャッジ日時 | 2024-07-19 22:50:20 |
合計ジャッジ時間 | 27,236 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
ソースコード
import sysreadline = sys.stdin.readlineMOD = 10**9+7N, M = map(int, readline().split())cEdge = []Edge = [[] for _ in range(N)]for _ in range(M):u, v, w = map(int, readline().split())u -= 1v -= 1cEdge.append((w, u, v))Edge[u].append((w, v))cEdge.sort()used = set()ans = [-1]*Nblock = 2*N + 10geta = N + 3used.add(geta)for w, u, v in cEdge:stack = [geta]for c in range(block-1):unode = u*block + cvnode = v*block + c + 1if unode in used and vnode not in used:used.add(vnode)stack.append(vnode)if c + 1 >= geta and ans[v] == -1:ans[v] = wwhile stack:node = stack.pop()vn, c = divmod(node, block)for wi, vf in Edge[vn]:if wi <= w:if c + 1 < block:vfnode = vf*block + c + 1if vfnode not in used:used.add(vfnode)stack.append(vfnode)if ans[vf] == -1 and c+1 >= geta:ans[vf] = welse:if c - 1 >= 0:vfnode = vf*block + c - 1if vfnode not in used:used.add(vfnode)stack.append(vfnode)if ans[vf] == -1 and c-1 >= geta:ans[vf] = wprint('\n'.join(map(str, ans[1:])))