拆路
题号:NC235745
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有 n 个城镇,城镇之间有 m 条道路相连,道路可以看成无向边。每一个城镇都有自己的一个繁荣度 v_i 一个城镇 u 受到的影响 p 是与 u 直接或者间接相连的所有城镇中,繁荣度的最大值。一个城镇 u 与城镇 v 是被视为直接或者间接相连的,当且仅当或者从u出发,可以沿着某些道路到达v。为了减少维护成本,现准备拆除其中的某一些路。具体来说,你需要维护以下两种操作:

  1. 'Q' a,询问 a 城镇受到的影响 p

  2. 'D' ,删除  之间的道路。


输入描述:

第一行输入两个整数  ,分别表示城镇的数量和道路的数量。

第二行输入 n 个整数  ,分别表示每一个城镇的繁荣度。

接下来 m 行,每行两个整数  ,表示城镇 u,v 之间有一条道路连接。保证不含有重边、自环。

接下来一行,输入一个整数  ,表示操作的个数。
接下来 Q 行,每行描述一个操作,以'Q'   或者'D'  的形式给出。对于删除操作,保证被删除的道路是存在的。

输出描述:

对于每一个操作1,你都需要输出一个整数 p ,表示城镇 a 受到的影响。
示例1

输入

复制
4 3
1 2 3 4
1 2
2 3
3 4
4
Q 1
D 2 3
Q 1
Q 3

输出

复制
4
2
4