#P15753. [JAG 2024 Summer Camp #3] Equal or Not Equal

[JAG 2024 Summer Camp #3] Equal or Not Equal

说明

NN 个整数变量 a1,,aNa_1, \ldots, a_N。所有变量的初始值均未指定。你需要按顺序处理 MM 个事件,每个事件是以下三种之一:观察事件、变更事件或询问事件。

一种观察事件的格式为:

1 x y\begin{aligned} &1 \ x \ y \end{aligned}

这表示观察到 axa_xaya_y 相等。换句话说,在此事件之后,除非有对其中任一变量的变更事件,否则保证这两个变量的值相同。

另一种观察事件的格式为:

2 x y\begin{aligned} &2 \ x \ y \end{aligned}

这表示观察到 axa_xaya_y 不相等。

变更事件的格式为:

3 x\begin{aligned} &3 \ x \end{aligned}

这表示变量 axa_x 的值变为一个不同的整数。

最后,询问事件的格式为:

4 x y\begin{aligned} &4 \ x \ y \end{aligned}

这询问 axa_xaya_y 是否相等。如果根据所有过去的事件可以证明 axa_xaya_y 相等,你必须输出 Yes。类似地,如果可以证明它们不相等,你必须输出 No。如果两者都无法证明,你必须输出 Unknown

输入格式

输入包含一个单独的测试用例,格式如下,其中输入的所有值均为整数。

$$\begin{aligned} &N \ M \\ &\text{event}_1 \\ &\vdots \\ &\text{event}_M \end{aligned}$$

整数 NN 是变量的数量(1N1061 \leq N \leq 10^6)。整数 MM 是事件的数量(1M500,0001 \leq M \leq 500,000)。MM 个事件按时间顺序给出。每个事件的格式如上所述。在观察事件或询问事件中,保证 1x<yN1 \leq x < y \leq N。在变更事件中,保证 1xN1 \leq x \leq N

在任何时刻,都保证存在至少一种对所有 NN 个变量的赋值,不与已给出的任何信息相矛盾。

输出格式

对于每个询问事件,输出 YesNoUnknown,每个输出占一行。

4 11
1 1 2
4 1 2
2 3 4
4 3 4
4 1 3
1 1 3
4 1 3
4 1 4
3 1
4 1 3
4 1 4
Yes
No
Unknown
Yes
No
No
Unknown

提示

翻译由 DeepSeek V3.2 完成