#P5385. [Cnoi2019] 须臾幻境
[Cnoi2019] 须臾幻境
题目背景
这曾今有一个凄婉哀伤的故事,但是被出题人删档弄丢了。
题目描述
初始时,你有一个 个结点 条边的无向图 ,结点的编号依次为 。
现在将 中所有 条边依次编号,排成一个长度为 边序列 ,其中 是一个二元组,表示一个连接 与 的无向边。
然后 Cirno 会给你 个询问二元组 ,表示询问「如果只保留 这个区间内的边的话,图中的联通块的个数」。
时间紧急,你需要设计尽可能快的算法解决 Cirno 的询问,而且由于在某些情况下询问之间也许互相依赖,你的程序需要保持在线运行。
输入格式
第一行,四个整数,用空格隔开,分别表示 , , , , 其中 表示强制在线参数,用于解密真实的询问。
接下来的 行,其中第 行包含两个整数 与 ,用空格隔开,表示边序列 。
再接下来 行,每行两个整数 ,用空格隔开,表示一组加密后的询问。
真实的询问二元组 由以下方式解密
DecodeQuery( l', r', m, t, last_ans )
(l, r) <- (l', r')
IF t > 0 THEN
l <- (l + t * last_ans) Mod |E| + 1
r <- (r + t * last_ans) Mod |E| + 1
IF l' > r' THEN
Swap(l, r)
RETURN (l, r)
其中 last_ans
表示上一次询问的答案,初始时 last_ans = 0
.
输出格式
行,表示每个询问的答案。
5 5 4 0
1 2
3 4
2 3
4 5
1 5
1 3
2 5
3 4
5 5
2
1
3
4
见附件中 sample2.in
见附件中 sample2.out
提示
样例解释
数据范围与约定
对于 的数据保证,$1\le |V| \le 10^5, 1\le |E| \le 2\times 10^5, 1\le q \le 10^5, t \in \{0,1\}$。注意数据可能包含重边和自环。
子任务
Subtask1( points):;
Subtask2( points):;
Subtask3( points):
Subtask3( points):无特殊限制。