在南极有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