#P17531. PM13206树上蓝点距离
PM13206树上蓝点距离
题目描述
给定一棵有 个节点的带权树,初始所有节点均为白色。接下来需要依次处理 个操作:
- 类型 :给定节点 ,将节点 染成蓝色。若它已经是蓝色,则状态不变。
- 类型 :给定节点 ,求 到所有蓝色节点的距离之和。
树和全部操作并不会直接输入,而是由以下随机数发生器生成。初始 curValue = startSeed:
nextRandom():
curValue = (curValue * 1999 + 17) mod 1000003
return curValue
建树过程如下。对 :
distance[i] = nextRandom() mod maxDist
parent[i] = nextRandom()
if parent[i] < threshold:
parent[i] = i
else:
parent[i] = parent[i] mod (i+1)
随后加入一条连接节点 与 、长度为 的边。
操作生成方式如下。对 :
queryType[i] = nextRandom() mod 2 + 1
queryNode[i] = nextRandom() mod N
请按顺序执行全部操作,并把所有类型 操作的答案进行按位异或,输出最终结果。
输入格式
一行输入五个整数:
N Q startSeed threshold maxDist
输出格式
输出一个整数,表示所有类型 查询答案的按位异或值。
数据范围
,。
,,。
样例
输入
4 6 15 2 5
输出
7