CF855D Rowena Ravenclaw's Diadem

题目描述

哈利在向海莲娜·拉文克劳的幽灵打听后,得知她曾经告诉汤姆·里德尔(又名伏地魔)关于罗伊娜·拉文克劳的冠冕的事情,而他从她那里偷走了冠冕。 哈利认为里德尔一定认为只有他自己发现了有求必应屋,因此会把冠冕藏在那里。所以哈利正试图进入有求必应屋去摧毁冠冕,因为他知道那是魂器。 但是,他必须回答一道谜题才能进入房间。现在给你 $n$ 个物品,编号从 $1$ 到 $n$。部分物品有父物品,父物品的编号比它小。形式化地说,物品 $i$ 可以有一个父物品 $parent_i$,其中 $parent_i < i$。 每个父子关系还关联一个类型,可以是类型 $1$ 或类型 $2$。类型 $1$ 表示子物品是父物品的特例。类型 $2$ 表示第二个物品总是父物品及其所有特例的一部分。 请注意,如果物品 $b$ 是物品 $a$ 的特例,且 $c$ 是 $b$ 的特例,则 $c$ 也被认为是 $a$ 的特例。部分关系同理:如果 $b$ 是 $a$ 的一部分,$c$ 是 $b$ 的一部分,则 $c$ 也是 $a$ 的一部分。另外,如果 $b$ 是 $a$ 的一部分,$c$ 是 $a$ 的特例,那么 $b$ 也被视为 $c$ 的一部分。 一个物品既不是它自身的部分也不是它自身的特例。 现在,哈利需要回答两种类型的查询: - 1 u v:你需要判断物品 $v$ 是否是物品 $u$ 的特例。 - 2 u v:你需要判断物品 $v$ 是否是物品 $u$ 的一部分。

输入格式

输入的第一行包含一个整数 $n$($1\leq n\leq 10^{5}$),表示物品的数量。 接下来 $n$ 行,每行包含两个整数 $parent_i$ 和 $type_i$($-1\leq parent_i < i$,$parent_i≠0$,$-1\leq type_i \leq 1$),表示第 $i$ 个物品的父物品 $parent_i$。如果 $type_i=0$,表示物品 $i$ 是 $parent_i$ 的特例;如果 $type_i=1$,表示物品 $i$ 是 $parent_i$ 的一部分。如果 $i$ 没有父物品,$parent_i$ 和 $type_i$ 都为 $-1$。 接下来一行,包含一个整数 $q$($1\leq q\leq 10^{5}$),表示查询数量。 接下来 $q$ 行,每行包含三个用空格分隔的整数 $type_i,u_i,v_i$($1\leq type_i\leq 2, 1\leq u,v\leq n$),分别表示查询类型与参数。

输出格式

输出 $q$ 行,每行对应一个查询的答案:"YES"(是)或 "NO"(否)(不含引号)。 你可以用大小写任意的字母输出。

说明/提示

在样例 1 中,由于物品 $2$ 是物品 $1$ 的特例,物品 $3$ 又是物品 $2$ 的特例,所以物品 $3$ 也是物品 $1$ 的特例。 在样例 2 中,由于物品 $2$ 是物品 $1$ 的特例,且物品 $1$ 有物品 $3$ 作为一部分,这意味着物品 $2$ 也有物品 $3$ 作为一部分。因为当一般情况(物品 $1$)拥有物品 $3$ 时,它的特例(物品 $2$)必然也会拥有物品 $3$。 由 ChatGPT 5 翻译