#P8123. [BalticOI 2021 Day1] Inside information

[BalticOI 2021 Day1] Inside information

题目描述

NN 个服务器,第 ii 个服务器存储着第 ii 块数据,现在有若干种操作:

  • S a baa 个服务器与第 bb 个服务器共享数据,即这两个服务器同时拥有这两个服务器本身拥有的数据块的和,并自动去重(可以理解为数据块之并)。
  • Q a d 查询第 aa 个服务器是否拥有第 dd 块数据。
  • C a 查询存储数据块 aa 的服务器数量。

S 操作有 N1N-1 次,如果把共享看做连边,那么最后将形成以 NN 个服务器为点的一棵树;Q 操作和 C 操作一共有 KK 次。

求对于每个 Q 操作和 C 操作返回的结果。

输入格式

第一行两个整数 N,KN,K 代表服务器个数和操作个数。

接下来 N+K1N+K-1 行每行代表一个操作。

输出格式

KK 行:

  • 对于 Q 操作,输出 yesno 代表是否拥有第 dd 块数据;
  • 对于 C 操作,输出一个整数代表服务器数量。
6 9
S 1 2
S 1 3
S 3 4
Q 5 1
S 4 5
S 1 6
Q 5 1
Q 1 5
C 1
C 2
C 3
C 4
C 5
C 6
no
yes
no
6
6
5
3
2
2
4 4
S 1 2
S 1 3
S 3 4
Q 2 1
Q 2 2
Q 2 3
Q 2 4
yes
yes
no
no

提示

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(5 pts):N4000N \le 4000
  • Subtask 2(5 pts):第 11 个服务器与第 2,3,,N2,3,\cdots,N 个服务器共享数据。
  • Subtask 3(10 pts):如果 AB=1|A-B|=1,那么第 AA 个服务器和第 BB 个服务器共享数据。
  • Subtask 4(20 pts):如果 A<BA<B2A=B2A=B2A+1=B2A+1=B,那么第 AA 个服务器和第 BB 个服务器共享数据。
  • Subtask 5(25 pts):每个服务器最多与 55 个服务器共享数据。
  • Subtask 6(35 pts):无特殊限制。

对于 100%100\% 的数据,1N,K1.2×1051 \le N,K \le 1.2 \times 10^5

说明

翻译自 BalticOI 2021 Day1 B Inside information