結果

問題 No.1787 Do Use Dynamic Tree
ユーザー gew1fw
提出日時 2025-06-12 16:00:46
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,440 bytes
コンパイル時間 292 ms
コンパイル使用メモリ 82,508 KB
実行使用メモリ 161,300 KB
最終ジャッジ日時 2025-06-12 16:01:12
合計ジャッジ時間 20,605 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 26 TLE * 1 -- * 11
権限があれば一括ダウンロードができます

ソースコード

diff #

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()
0