几乎就是并查集
时间限制:1秒 内存限制:256M
【题目描述】
你的任务是实现一个并查集的变种。它也是需要维护一些不相交集合,并且支持如下 3 钟操作:
1 p q:合并元素 p 和元素 q 所在集合。如果二者已经在同一个结合中,忽略此命令
2 p q:把元素 p 移动到 q 所在的集合。如果二者已经在同一个集合,忽略此命令
3 q:输出 q 所在的集合元素个数和该集合所有元素之和
初始时,一共有 n 个单元素集合:{1},{2},…,{n}。
【输入格式】
输入包含多组数据。每组数据第一行为两个整数 n 和 m。
以下 m 行每行为一条指令。输入结束为文件结束标志(EOF)。输入大小不超过 5MB。
【输出格式】
对于每条类型 3 的指令,输出 q 所在的集合元素个数和该集合所有元素之和。
【输入输出样例】
Input
5 7
1 1 2
2 3 4
1 3 5
3 4
2 4 1
3 4
3 3
Output
3 12
3 7
2 8
【输入输出样例解释】
初始时的5个单元集合:{1}, {2}, {3}, {4}, {5}。
执行操作1 1 2后: {1,2}, {3}, {4}, {5}。
执行操作2 3 4后: {1,2}, {3,4}, {5} (没有把空集列出)。
执行操作1 3 5后: {1,2}, {3,4,5}。
执行操作3 4: 4所在集合为{3,4,5},有3个元素,元素和为3+4+5=12。
执行操作 2 4 1后:: {1,2,4}, {3,5}
执行操作3 4: 4所在集合为{1,2,4},有3个元素,元素和为1+2+4=7。
执行操作3 3: 3所在集合为{3,5},有2个元素,元素和为3+5=8。
【数据限制】
对于 \(100\%\) 的数据, \(1≤n,m≤100000\)。
【来源】
Mr.he