Logo Universal Online Judge

UOJ

时间限制:5 s 空间限制:125 MB
统计

在南极有N个小岛(从1到N编号),每个岛上有一定数量的企鹅(数量会不时改变,但不会超过1000个),为了方便旅游者在不同的岛间看企鹅,政府可能会修一些桥(最初没有岛有桥连接),但建桥费用太高,所以两个岛如果可以绕道,则不新建。
现给定一些命令:
形式如下:
"bridge A B" 表示修桥,将A B连通,如果有路连通A B则你输出 "no" ,修建任务不执行,否则执行并输出“yes”.
"penguins A X" A岛上的企鹅数量改为X。不输出任何信息。
"excursion A B" 旅行者从A到B,如果能到达则输出途中他能看到的企鹅的总数(包括A、B),否则输出 "impossible".
以下内容对本评测系统无效,可跳过,原题上的信息:
(重要提示,你的程序必须对每一个"bridge" 和 "excursion" 立刻响应,服务器要等你的答案出来后才给出下一个命令。
Another important note: for the server program to be able to read your program's responses, your
program must flush the standard output after every response it outputs.
•In C++, use the command cout << flush;
•In C, use fflush(stdout);
•In pascal, use flush(output);

输入:
第一行一个整数N (1 ≤ N ≤ 30 000),岛的个数。
第二行N个整数(在0和1000之间),表示每个小岛上企鹅的个数。
第三行一个整数Q (1 ≤ Q ≤ 300 000),表示命令的个数。
50% 的数据"penguins"命令不出现且N 是奇数。另外的 N是偶数.
样例:

输入:
5
4 2 4 5 6
10
excursion 1 1
excursion 1 2
bridge 1 2
excursion 1 2
bridge 3 4
bridge 3 5
excursion 4 5
bridge 1 3
excursion 2 4
excursion 2 5
输出:
4
impossible
yes
6
yes
yes
15
yes
15                                                 
16
输入:
6
1 2 3 4 5 6
10
bridge 1 2
bridge 2 3
bridge 4 5
excursion 1 3
excursion 1 5
bridge 3 4
excursion 1 5
penguins 3 10
excursion 1 3
bridge 1 5
输出:
yes
yes
yes
6
impossible
yes
15
13
no