编程题:动态树+并查集
不久前,米尔科创办了一家名为“冰之梦”的新旅行社。该机构购买了南极附近的N座冰岛,现在提供远足服务。特别受欢迎的是帝企鹅,在岛上可以找到大量帝企鹅。
米尔科的机构已经成为一个巨大的打击;太大了,用船远足已经不划算了。该机构将在岛屿之间修建桥梁,并通过公交车运送游客。米尔科希望引入一种计算机程序来管理桥梁建造过程,从而减少错误的发生。
岛屿编号为1到N。最初没有两个岛屿通过桥梁连接。每个岛上企鹅的最初数量是已知的。这个数字可能会改变,但始终在0到1000(含)之间。
您的程序必须处理以下三种类型的命令:
•“桥梁A B”——收到在A岛和B岛之间修建桥梁的提议(A岛和B岛将有所不同)。为了限制成本,你的项目只有在没有办法使用之前建造的桥梁从一个岛到另一个岛的情况下,才必须接受该提议。如果报价被接受,程序应输出“是”,然后建造桥梁。如果报价被拒绝,程序应输出“否”。
•“企鹅A X”——A岛上的企鹅已经被重新计算过,现在有X只。这是一个信息丰富的命令,您的程序不需要响应。
•“游览A B”——一群游客希望从A岛游览到B岛。如果游览是可能的(从A岛到B岛是可能的),程序应该输出游客在游览中看到的企鹅总数(包括A岛和B岛)。
否则,程序应该输出“不可能”。重要提示:您的程序必须在收到命令“bridge”和“excursion”后立即输出响应。在您的程序响应上一个命令之前,服务器程序不会发送下一个命令。
另一个重要注意事项:为了让服务器程序能够读取程序的响应,程序必须在每次输出响应后刷新标准输出。
### 输入格式:
第一行包含整数N(1≤N≤30000),表示岛屿的数量。
第二行包含0到1000之间的N个整数,表示每个岛屿上企鹅的初始数量。
第三行包含一个整数Q(1≤Q≤300000),表示命令的数量。
Q命令紧随其后,每一条命令都有自己的行。如上所述,在收到“bridge”或“excursion”命令后,程序将不会收到另一个命令,直到它对上一个命令做出响应。
### 输出格式:
输出对命令“bridge”和“excursion”的响应,每个命令独占一行。
### 得分:
在50%的测试用例中,“penguins”命令不会出现。在这些测试用例中,N是奇数,而在所有其他用例中,N是偶数。
### 输入样例1:
in
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
### 输出样例1:
out
4
impossible
yes
6
yes
yes
15
yes
15
16
### 输入样例2:
in
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
### 输出样例2:
out
yes
yes
yes
6
impossible
yes
15
13
no
答案:若无答案欢迎评论
米尔科的机构已经成为一个巨大的打击;太大了,用船远足已经不划算了。该机构将在岛屿之间修建桥梁,并通过公交车运送游客。米尔科希望引入一种计算机程序来管理桥梁建造过程,从而减少错误的发生。
岛屿编号为1到N。最初没有两个岛屿通过桥梁连接。每个岛上企鹅的最初数量是已知的。这个数字可能会改变,但始终在0到1000(含)之间。
您的程序必须处理以下三种类型的命令:
•“桥梁A B”——收到在A岛和B岛之间修建桥梁的提议(A岛和B岛将有所不同)。为了限制成本,你的项目只有在没有办法使用之前建造的桥梁从一个岛到另一个岛的情况下,才必须接受该提议。如果报价被接受,程序应输出“是”,然后建造桥梁。如果报价被拒绝,程序应输出“否”。
•“企鹅A X”——A岛上的企鹅已经被重新计算过,现在有X只。这是一个信息丰富的命令,您的程序不需要响应。
•“游览A B”——一群游客希望从A岛游览到B岛。如果游览是可能的(从A岛到B岛是可能的),程序应该输出游客在游览中看到的企鹅总数(包括A岛和B岛)。
否则,程序应该输出“不可能”。重要提示:您的程序必须在收到命令“bridge”和“excursion”后立即输出响应。在您的程序响应上一个命令之前,服务器程序不会发送下一个命令。
另一个重要注意事项:为了让服务器程序能够读取程序的响应,程序必须在每次输出响应后刷新标准输出。
### 输入格式:
第一行包含整数N(1≤N≤30000),表示岛屿的数量。
第二行包含0到1000之间的N个整数,表示每个岛屿上企鹅的初始数量。
第三行包含一个整数Q(1≤Q≤300000),表示命令的数量。
Q命令紧随其后,每一条命令都有自己的行。如上所述,在收到“bridge”或“excursion”命令后,程序将不会收到另一个命令,直到它对上一个命令做出响应。
### 输出格式:
输出对命令“bridge”和“excursion”的响应,每个命令独占一行。
### 得分:
在50%的测试用例中,“penguins”命令不会出现。在这些测试用例中,N是奇数,而在所有其他用例中,N是偶数。
### 输入样例1:
in
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
### 输出样例1:
out
4
impossible
yes
6
yes
yes
15
yes
15
16
### 输入样例2:
in
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
### 输出样例2:
out
yes
yes
yes
6
impossible
yes
15
13
no
答案:若无答案欢迎评论