U559333 persistent DSU on cactus

题目背景

成长:tree $\Rightarrow$ cactus。

题目描述

$n$ 个点 $m$ 条边的仙人掌,每个结点有一个颜色 $c_u$。 $q$ 次询问 $(u,k)$,求 $u$ 的子仙人掌中出现次数不小于 $k$ 的颜色的颜色编号和。 $u$ 的子仙人掌被定义为:断开在 $1,u$ 所有简单路径上出现过的边后,$u$ 所在的连通块。

输入格式

第一行一个整数 $p$,表示是否强制在线。 第二行两个整数 $n,m$。 接下来一行 $n$ 个整数,第 $i$ 个整数为 $c_i$,表示 $i$ 的颜色。 接下来 $m$ 行,每行两个整数 $u,v$,表示 $u,v$ 之间有一条边。 接下来一个整数 $q$,表示询问次数。 接下来 $q$ 行,每行两个整数 $u',k'$。若 $p=0$,$u=u'$,$k=k'$;否则 $u=u'\operatorname{xor}lastans$,$k=k'\operatorname{xor}lastans$,初始 $lastans=0$。

输出格式

$q$ 行整数,表示答案。

说明/提示

$2\leq n\leq10^5$。熟悉仙人掌的同学应该不需要 $m$ 的范围($n-1\leq m\leq2n-2$)。$1\leq q\leq 10^5$。$p\in\{0,1\}$。$k\leq n$。$c_u\in[1,n]$。 对于 $0\%$ 的数据,和样例一模一样。 对于 $50\%$ 的数据,$p=0$。 对于 $20\%$ 的数据,$n\leq10^3$。 数据较水,可能会放过一些假的做法。只要空间复杂度别太离谱就行。 我的博文 & 题解:[《圆方树学习笔记 —— 一种关于点双连通分量的思考方式》](https://www.cnblogs.com/XuYueming/p/18313014)。