#P5622. [DBOI2019] 巫女的职责

[DBOI2019] 巫女的职责

题目背景

作为八重村的巫女,樱承担着守卫村庄的责任,村子里受到了崩坏的威胁,八重樱,出击!

bachongyingyingying

题目描述

八重古村有 nn 座房屋,一开始所有的房子之间都没有路,随着古村的发展,慢慢会出现连接两栋房屋的双向道路。

村民们原本过着无忧无虑的幸福生活,直到与文明作对——崩坏来了,慢慢地,某栋房屋也许会在遭受崩坏兽的侵袭,每只崩坏兽都有着一定的崩坏能,每户人家也许会存在着多只崩坏兽。

樱来了,她接受了驱魔委托,每个委托都是从驱逐某个房子到另一个房子的崩坏兽,樱只能走已有的路,由于这样的路径也许有很多条,聪明的樱只会选择在它们所有路径中都会走过的某些点,即必经点,每次委托樱会在两点间的所有必经点驱魔。

输入格式

第一行两个整数:n,mn,m 表示房屋数和事件数

接下来 mm 行,每行三个正整数:opt,x,yopt,x,y

opt=1opt=1 时,表示房子 xx 和房子 yy 间修了一条双向道路(保证没有重边,但不保证没有自环,如有请忽略。)

opt=2opt=2 时,表示房子 xx 来了一只崩坏能为 yy 的崩坏兽

opt=3opt=3 时,表示樱完成了一次从 xxyy 的驱魔委托(不保证 xxyy 连通,不连通输出 00 即可)

强制在线:记上次33的答案为 lastans\text{lastans},初值为 00,实际上的x,yx,y 用函数解码:

inline const void decode(int &x)
{
	x^=lastans%n;
	if (x>n)x%=n;
	if (!x)x=1;
}

输出格式

对于每个 33 事件,输出一行一个数表示樱清除的崩坏能的值,答案保证在 [0,263)[0,2^{63})

4 7
1 1 2
1 1 3
1 3 4
2 1 1
2 1 2
3 1 4
3 3 4
3
0
4 8
2 1 629
3 3 1
2 4 923
1 4 2
2 4 542
2 1 918
1 2 3
3 4 3

0
5

提示

【样例 11 说明】

第四个事件使 11 号房屋有 11 点的崩坏能。

第五个事件使 11 号房屋增加了 22 点的崩坏能,此时其崩坏能值为 33

第六个事件显然答案为 33,更新 lastans=3\text{lastans}=3

第七个事件真实的 x=1x=1y=3y=3,由于第六个事件已经在 11 驱魔,所以没有崩坏能。

SubtaskSubtask #112020 分):

1n,m1000001\leq n,m\leq 100000

SubtaskSubtask #227070 分):

1n,m2000001\leq n,m\leq 200000

SubtaskSubtask #331010 分):

1n,m5000001\leq n,m\leq 500000

所有测试点的时间限制统一为 1.5s1.5 \text s,内存限制统一为 125MiB125 \text{MiB}

题目提供者:zhengrunzhe\color{red}{zhengrunzhe}