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)。