結果
問題 |
No.1787 Do Use Dynamic Tree
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:11:55 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,440 bytes |
コンパイル時間 | 365 ms |
コンパイル使用メモリ | 82,232 KB |
実行使用メモリ | 321,728 KB |
最終ジャッジ日時 | 2025-06-12 21:14:01 |
合計ジャッジ時間 | 19,799 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 TLE * 1 -- * 11 |
ソースコード
import sys from collections import deque def main(): sys.setrecursionlimit(1 << 25) input = sys.stdin.read data = input().split() ptr = 0 N = int(data[ptr]) ptr += 1 edges = [[] for _ in range(N+1)] for _ in range(N-1): a = int(data[ptr]) ptr += 1 b = int(data[ptr]) ptr += 1 edges[a].append(b) edges[b].append(a) Q = int(data[ptr]) ptr += 1 queries = [] for _ in range(Q): u_i = int(data[ptr]) ptr += 1 v_i = int(data[ptr]) ptr += 1 queries.append((u_i, v_i)) value = list(range(N+1)) # value[0] unused prev_ans = 0 for u_i, v_i in queries: x = prev_ans u = ((u_i + N - 1 + x) % N) + 1 v = ((v_i + N - 1 + x) % N) + 1 # Swap values value[u], value[v] = value[v], value[u] # Find the optimal w for u visited = set() current = u while True: visited.add(current) max_val = -1 next_node = None for neighbor in edges[current]: if neighbor not in visited and value[neighbor] > max_val: max_val = value[neighbor] next_node = neighbor if next_node is None: break current = next_node prev_ans = current print(prev_ans) if __name__ == '__main__': main()