luogu#P10214. [CTS2024] 投票游戏

[CTS2024] 投票游戏

题目描述

nn 个人,由 11nn 编号。第 i(2in)i (2 \le i \le n) 个人有一个讨厌的人 fi(1fi<i)f_i (1 \leq f_i < i),第 11 个人没有讨厌的人。

这一天,nn 个人进行了一场关于投票的游戏。一次游戏会进行 nn 轮。游戏开始时,所有人都没有被票出。游戏的每一轮中,会进行以下过程:

  1. 对于每一个没有被票出的人 ii,TA 初始有 aia_i 票。
  2. 随后,对于每一个没有被票出的人 ii,如果 TA 有讨厌的人且 TA 讨厌的人 fif_i 没有被票出,则 TA 会给 fif_ibib_i 票。
  3. 最后,票出当前没有被票出的人的票数最高的,如果有多个票数最高的人,票出其中编号最大的人。

一次游戏的 nn 轮之间独立计票。

在游戏开始前,发生了 qq 次事件,事件有以下两种:

  1. 给定 p,x,yp, x, y,将 (ap,bp)(a_p, b_p) 修改为 (x,y)(x,y)
  2. 小明想知道,给定两个人 c,dc,d,如果此刻进行一次游戏,两个人中谁先被票出。

作为小明的朋友,你可以帮帮小明吗?

输入格式

从标准输入读入数据。

第一行两个正整数 n,qn, q,表示人数与发生的事件数。

第二行 (n1)(n-1) 个整数 f2,f3,,fnf_2, f_3, \cdots, f_n

第三行 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n

第四行 nn 个整数 b1,b2,,bnb_1, b_2, \cdots, b_n

接下来 qq 行,每行三个或四个整数描述一个事件。第一个正整数 opop 表示发生事件的类型。

  • op=1op=1,则接下来三个整数 p,x,yp, x, y,表示将 (ap,bp)(a_p, b_p) 修改为 (x,y)(x, y)
  • op=2op=2,则接下来两个正整数 c,dc, d,你需要判断如果此时进行了一次游戏,ccdd 谁先被票出。

输出格式

输出到标准输出。

对于每个 op=2op=2 的事件输出一行一个 01 字符,若 cc 先被票出输出 0,否则输出 1

5 8
1 2 3 2
1 3 2 1 0
0 4 1 0 0
2 1 3
1 1 0 3
2 2 5
1 1 2 2
2 4 3
2 5 4
2 5 1
2 2 1

0
0
1
1
1
1

提示

对于所有测试数据,

  • 1n,q2×1051 \le n, q \le 2 \times 10^5
  • 2in,1fi<i\forall 2 \le i \le n, 1 \le f_i < i
  • 0ai,bi,x,y1080 \le a_i, b_i, x, y \le 10^8
  • 1c,d,pn1 \le c, d, p \le n
  • cdc \ne d
子任务编号 子任务分值 nn \leq qq \leq 特殊性质
1 5 500500
2 10 30003000
3 2×1052 \times 10^5 fif_i[1,i1][1, i - 1] 中均匀随机
4 15 fi=1f_i = 1
5 30 fi=i1f_i = i-1
6