P12754 [POI 2017 R3] 米达斯 Midas

题目背景

翻译来自于 [LibreOJ](https://loj.ac/p/5062)。

题目描述

**题目译自 [XXIV Olimpiada Informatyczna — III etap](https://sio2.mimuw.edu.pl/c/oi24-3/dashboard/) [Midas](https://szkopul.edu.pl/problemset/problem/wrTmzO9-dzEbLtsRUCdMV2_W/statement/)** Bajtazar,米达斯国王的御用工程师,奉命建造了一座迷宫。原计划迷宫的房间用于展示珍奇展品,但实际上,它成了为国王金库增收巨额金币的工具。 迷宫由多个房间和连接它们的通道组成,入口位于房间 $1$。每间房间的通道分叉,可选择左或右通道离开(部分通道可能被封锁,无法通行)。通道只分叉,不汇合。游客携带收费装置,每次通过通道需支付金币,费用取决于已付金币总数及所选通道:左通道费用等于此前总费用,右通道费用比此前总费用多 $1$ 金币。 这种复杂的收费机制旨在掩盖实际游览成本,但给游客带来不便。Bajtazar 决定协助游客,聘请你编写程序回答以下查询:若游客持有恰好从入口到房间 $x$ 所需的金币,能否用同样金币从入口到达房间 $y$?

输入格式

第一行包含一个正整数 $n$,表示迷宫房间数量,房间编号为 $1$ 至 $n$,入口位于房间 $1$。 接下来的 $n$ 行描述迷宫,第 $i$ 行包含两个整数 $l_i, r_i$ $(0 \leq l_i, r_i \leq n)$。若 $l_i > 0$,表示从房间 $i$ 的左通道可达房间 $l_i$;若 $l_i = 0$,左通道被封锁。$r_i$ 类似描述右通道。从房间 $1$ 出发,可达所有其他房间。 下一行包含一个正整数 $z$,表示查询数量。 接下来的 $z$ 行描述查询,第 $i$ 行包含两个整数 $x_i, y_i$ $(1 \leq x_i, y_i \leq n)$,表示查询:从入口到房间 $x_i$ 所需金币是否足够到达房间 $y_i$。

输出格式

输出 $z$ 行,若第 $i$ 个查询的答案为是,在第 $i$ 行输出 `TAK`,否则输出 `NIE`。

说明/提示

**样例 1 解释** ![](https://cdn.luogu.com.cn/upload/image_hosting/dv93to84.png) 图示描绘了示例中的迷宫:房间用圆圈表示,通道费用标注于方框内。从上至下、选择左或右分支对应迷宫中的左或右路。例如,访问房间 $3$ 需支付 $3+1+1+1=3+3$ 金币;访问房间 $11$ 需支付 $1+1+3+1=4$ 金币,不足以到达房间 $8$(需 $0+1+1+2=5$ 金币),对应第一个查询的 `NIE`。 **附加样例** 1. $n=7$,房间形成完全二叉树,$z=49$,查询所有房间对。 2. $n=2^{15}-1$,房间形成完全二叉树,$z=n+1$,查询相邻叶子对,每对有两次查询(一次 `TAK`,一次 `NIE`)。 3. $n=1000000$,左路形成长度 $n/2$ 的路径,每房间有右通道分支,$z=10$,随机查询。 详细子任务附加限制及分值如下表所示。 | 子任务 | 附加限制 | 分值 | | :---: | :--: | :---: | | $1$ | $n \leq 20, z \leq 50$ | $15$ | | $2$ | $n \leq 1000, z \leq 1000$ | $9$ | | $3$ | $n \leq 1000, z \leq 1000000$ | $14$ | | $4$ | $n \leq 1000000, z \leq 1000$ | $11$ | | $5$ | $n \leq 1000000, z \leq 1000000$ | $51$ |