比赛场次 354
比赛名称 寒假颓废练习
比赛状态 已结束比赛成绩
开始时间 2017-01-25 18:00:00
结束时间 2017-01-25 23:00:00
开放分组 全部用户
注释介绍 新年新颓废
题目名称 黑白树的操作
输入输出 MD5.in/out
时间限制 5000 ms (5 s)
内存限制 512 MiB
测试点数 20 简单对比
用户 结果 时间 内存 得分
GravatarGo灬Fire WWWWWWWWWWWWWWWWWWWW
0.008 s 10.04 MiB 0
GravatarAntiLeaf WWWWWWWWWWWWWWWWWWWW
0.026 s 2.69 MiB 0
GravatarFoolMike WTTTTTWTWWTTTTTTTTTT
80.894 s 96.64 MiB 0

黑白树的操作

★★★★☆   输入文件:MD5.in   输出文件:MD5.out   简单对比
时间限制:5 s   内存限制:512 MiB


【题目描述】

不要紧张。题目的名字只是一个MD5

A有一堆小圆点。某天,他无聊了,于是他想把这些点连成一棵无根树。

A觉得他不能放过这个防AK的好机会,于是他想借此考考你。

一开始,小An个点,这n个点分别编号为1~n。每个点都有颜色,任何时刻,点的颜色都只能是黑白两种颜色之一。初始时,所有点都是白色的。

A一共会进行m次操作,每次操作只可能是以下的三种之一:

A u v w:添加一条连接(u,v)的无向边,长度为w

C u:反转点u的颜色,即如果点u原来是白色则反转后会变成黑色,反之亦然。

Q u:询问所有与点u连通的黑点到点u的距离之和。定义连通的两点间的距离为两点间简单路径上的边长度之和。

因为小A觉得这个问题太简单了,所以他决定强制在线。

【输入格式】

第一行一个整数T,表示测试点编号。

第二行两个整数n,m,分别表示点的个数和操作数。

以下m行,每行描述一个操作,格式如上所述。

为了防止你采用各种离线算法水掉本题,本题强制在线,每次输入的整数均需异或(上一次询问的答案mod n)。如果还没有进行询问,那么上一次询问的答案是0

注意,mod n是在n的剩余系下,比如-1 mod 5 = 4.

【样例输入】

3 7

A 1 2 3

C 1

Q 2

Q 3

A 2 3 1

C 2

Q 3

【样例输出】

3

0

5

【样例解释】

样例输入解密后为

3 7

A 1 2 3

C 1

Q 2

Q 3

A 2 3 1

C 2

Q 3

【数据范围与约定】

本题共有20个测试点,每个测试点的数据范围和特殊性质如下:

测试点编号

n

m

特殊性质

1

=10

=30

2

<=100

<=200

3

<=500

4

5

<=500

<=1000

6

7

<=2000

<=5000

所有A操作在其他操作之前

8

9

<=50000

<=200000

具有以下两个测试点的特殊性质

10

所有A操作在其他操作之前

11

树的形态随机

12

每个点的度不超过2

13

<=100000

<=300000

14

15

16

17

18

19

20

1~20

保证所有边的长度绝对值<=10000

你可以假定给出的所有操作均合法,即进行A操作后一定不会产生环,给出的点的编号都在1~n之内。但请注意,数据不保证最后得到的一定是一棵树(也即所有点可能不连通)