[DBOI2019] 巫女的职责
题目背景
作为八重村的巫女,樱承担着守卫村庄的责任,村子里受到了崩坏的威胁,八重樱,出击!
![bachongyingyingying](http://i0.hdslb.com/bfs/article/81e9465c02e29053f9fbe7c70d3c2644691abda2.png)
题目描述
八重古村有 $n$ 座房屋,一开始所有的房子之间都没有路,随着古村的发展,慢慢会出现连接两栋房屋的双向道路。
村民们原本过着无忧无虑的幸福生活,直到与文明作对——崩坏来了,慢慢地,某栋房屋也许会在遭受崩坏兽的侵袭,每只崩坏兽都有着一定的崩坏能,每户人家也许会存在着多只崩坏兽。
樱来了,她接受了驱魔委托,每个委托都是从驱逐某个房子到另一个房子的崩坏兽,樱只能走已有的路,由于这样的路径也许有很多条,聪明的樱只会选择在它们所有路径中都会走过的某些点,即必经点,每次委托樱会在两点间的所有必经点驱魔。
输入输出格式
输入格式
第一行两个整数:$n,m$ 表示房屋数和事件数
接下来 $m$ 行,每行三个正整数:$opt,x,y$
$opt=1 $时,表示房子 $x$ 和房子 $y$ 间修了一条双向道路(保证没有重边,但不保证没有自环,如有请忽略。)
$opt=2$ 时,表示房子 $x$ 来了一只崩坏能为 $y$ 的崩坏兽
$opt=3$ 时,表示樱完成了一次从 $x$ 到 $y$ 的驱魔委托(不保证 $x$ 与 $y$ 连通,不连通输出 $0$ 即可)
强制在线:记上次$3$的答案为 $\text{lastans}$,初值为 $0$,实际上的$x,y$ 用函数解码:
```cpp
inline const void decode(int &x)
{
x^=lastans%n;
if (x>n)x%=n;
if (!x)x=1;
}
```
输出格式
对于每个 $3$ 事件,输出一行一个数表示樱清除的崩坏能的值,答案保证在 $[0,2^{63})$
输入输出样例
输入样例 #1
4 7
1 1 2
1 1 3
1 3 4
2 1 1
2 1 2
3 1 4
3 3 4
输出样例 #1
3
0
输入样例 #2
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
输出样例 #2
0
5
说明
【样例 $1$ 说明】
第四个事件使 $1$ 号房屋有 $1$ 点的崩坏能。
第五个事件使 $1$ 号房屋增加了 $2$ 点的崩坏能,此时其崩坏能值为 $3$。
第六个事件显然答案为 $3$,更新 $\text{lastans}=3$ 。
第七个事件真实的 $x=1$,$y=3$,由于第六个事件已经在 $1$ 驱魔,所以没有崩坏能。
$Subtask$ #$1$($20$ 分):
$1\leq n,m\leq 100000$。
$Subtask$ #$2$($70$ 分):
$1\leq n,m\leq 200000$。
$Subtask$ #$3$($10$ 分):
$1\leq n,m\leq 500000$。
所有测试点的时间限制统一为 $1.5 \text s$,内存限制统一为 $125 \text{MiB}$。
### 题目提供者:[$\color{red}{zhengrunzhe}$](https://www.luogu.org/space/show?uid=14374)