无聊的游戏

Time Limit: 3000 ms

Memory Limit: 65536 KB

Description

生活不是时时刻刻都充满fun,无聊的时候该如何是好呢?Azores选择玩无聊的游戏来打发时间。这个游戏有多无聊呢?让我们来看看: 在一张白纸上随机洒落n个硬币并标号为1...n,选择一些硬币,用铅笔在他们之间划线。 然后进行三种操作: 1、add_line(u,v)硬币u和硬币v之间划一条线。 2、del_line(u,v)擦去硬币u和硬币v之间的线并翻转u和v。 3、count_coin_upside(u)回答与硬币u相连的硬币中有多少个是正面向上的。
Cabbage觉得Azores一直玩这个游戏脑子会瓦塌掉的,想编一个程序秒杀这个游戏,但是他仔细想了想后觉得这个问题并不是很简单,你能帮他搞定么?

Input

多个测试样例,数据以EOF结尾。

每个测试样例第一行是三个整数n,m,q(1 <= n <= 50000; 1 <= m <= 150000; 1 <= q <= 250000)分别表示有多少个硬币,开始有多少硬币间有连线,询问的次数。
第二行有n个整数,0表示第i个硬币是反面向上,1表示第i个硬币是正面向上。 接下来m行每行有两个整数u,v(1 <= u, v <= n)表示硬币u和硬币v之间连线。 接下来q行表示q个操作,格式如下: "A u v"(1 <= u, v <= n)表示add_line(u,v) "D u v"(1 <= u, v <= n)表示del_line(u,v) "C u"(1 <= u <= n)表示count_coin_upside(u)

Output

对于每个count_coin_upside(u)操作,输出与硬币u相连的硬币中有多少个是正面向上的。

Sample Input

6 6 5
0 1 0 1 1 1
1 2
2 3
3 4
2 4
3 5
5 6
C 6
D 3 5
C 6
A 4 6
C 4

Sample Output

1
0
3

Hint

大量输入输出,建议使用scanf和printf。

Source

“掌赢杯”南京理工大学第六届程序设计大赛

提交代码