题号:NC19778
时间限制:C/C++/Rust/Pascal 6秒,其他语言12秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld
题目描述
小贝最近开发了某款游戏,游戏中玩家会组成不同的队伍。通常大家都会选择跟朋友组队。当一个玩家上线时,他自己会新创建一个队伍,这个队伍只有他一个人。之后他可以邀请好友组队,当好友同意后两支队就会合并。所以即便两个玩家不是好友,他们也可能通过一个共同好友的邀请成为队友。即便他们共同的好友下线了,他们依然可以在同一只队中继续玩。
现在有N个玩家,编号为1到N;有M对好友关系(这个关系是相互的)。当一个玩家上线时,他会立刻向所有好友发送组队邀请(假设所有玩家都会接受好友的邀请);在他下线时,他会离开当前队伍。
服务器日志记录下了每个人进入游戏和离开游戏的时间,小贝想知道某些时刻某名玩家所在的队伍中有多少人,于是添加了一些查询操作。你需要根据游戏规则和日志,回答小贝的问题。
输入描述:
数据有多组,第一行一个整数T表示数据组数。
每组数据第一行有三个整数N, M, Q,表示玩家总数,好友关系数,以及日志记录的操作和小贝的查询次数。接下来M行,每一行有两个整数Ui, Vi, 表示玩家Ui, Vi是好友。接下来Q行每行描述一个日志或者查询操作,格式如下:
• i U, 玩家U进入了游戏
• o U, 玩家U离开了游戏
• q U, 询问玩家U所在的队伍有多少人
输出描述:
对于每组数据第一行输出形如"Case #x:",其中 x 为这组数据的编号(从1开始)。接下来若干行,每一行对应一个查询的答案。
示例1
输入
复制
1
3 2 7
1 2
2 3
i 1
i 3
q 1
i 2
q 1
o 2
q 1
备注:
1 ≤ T ≤ 20
1 ≤ N ≤ 105
1 ≤ M ≤ 105
1 ≤ Q ≤ 105
1 ≤ Ui ≤ N
1 ≤ Vi ≤ N
Ui ≠ Vi