ZUFEOJ
Home
ProblemSet
Source/Category
Contest
Status
Ranklist
F.A.Qs
Login
Register
7609: 部落冲突
内存限制:128 MB
时间限制:2 S
题面:Markdown
评测方式:文本比较
上传者:
提交:1
通过:1
提交
提交记录
统计
Web Board
题目描述
超级细胞王国住着 $n$ 个野蛮人,一开始第 $i$ 个人各自在部落 $i$。为了共同抵御哥布林的入侵,野蛮人会在部落之间游走,进行结盟,交换,移动等操作。 作为哥布林派来的间谍,你观察到了每个野蛮人的去向,但是想知道某个野蛮人在哪个部落仍然是一件困难的事情。所以他来寻求你的帮助,希望你写一个程序帮帮他! 总共有 $q$ 个操作,操作类型包括: - $1\ a\ b$:$a$ 部落与 $b$ 部落结盟。结盟操作使部落合并,新部落的编号是 $a$ 部落的编号; - $2\ a\ b$:野蛮人 $a$ 移动到部落 $b$ 中; - $3\ a\ b$:$a$ 部落中的所有野蛮人转移到 $b$ 部落,$b$ 部落的野蛮人同时转移到 $a$ 部落中; - $4\ a$:查询 $a$ 野蛮人所在部落的编号。 --- 为了防止输入过大带来的常数问题,`C++` 选手请尽量使用关闭流同步的 `std::cin` 和 `std::cout` 实现输入输出,否则可能出现因读入输出问题导致的 TLE 等。 ```cpp int main(){ std::ios::sync_with_stdio(0); std::cin.tie(0); // your code return 0; } ```
输入格式
第一行一个整数 $ T $ $ \left(1 \leq T \leq 6\right) $,表示测试数据组数。 对于每组数据,第一行包含两个用空格分隔的正整数 $ n , q $ $ \left(1\leq n,q \leq 10^6\right)$。 接下来 $q$ 行,每一行按如下格式给出一个操作: - $1\ a\ b$:$a$ 部落与 $b$ 部落结盟。结盟操作使部落合并,新部落的编号是 $a$ 部落的编号; - $2\ a\ b$:野蛮人 $a$ 移动到部落 $b$ 中; - $3\ a\ b$:$a$ 部落中的所有野蛮人转移到 $b$ 部落,$b$ 部落的野蛮人同时转移到 $a$ 部落中; - $4\ a$:查询 $a$ 野蛮人所在部落的编号。 保证操作中出现的部落一定合法。
输出格式
对于所有操作 $4$,输出 $a$ 野蛮人所在部落的编号。
输入样例
复制
1 5 10 4 3 1 2 4 1 1 3 4 4 1 5 5 4 5 3 1 2 4 4 3 5 2 4 3
输出样例
复制
3 2 5 1 5
分类标签
2025杭电春季赛3