P15753 [JAG 2024 Summer Camp #3] Equal or Not Equal
题目描述
有 $N$ 个整数变量 $a_1, \ldots, a_N$。所有变量的初始值均未指定。你需要按顺序处理 $M$ 个事件,每个事件是以下三种之一:观察事件、变更事件或询问事件。
一种观察事件的格式为:
$$\begin{aligned} &1 \ x \ y \end{aligned}$$
这表示观察到 $a_x$ 和 $a_y$ 相等。换句话说,在此事件之后,除非有对其中任一变量的变更事件,否则保证这两个变量的值相同。
另一种观察事件的格式为:
$$\begin{aligned} &2 \ x \ y \end{aligned}$$
这表示观察到 $a_x$ 和 $a_y$ 不相等。
变更事件的格式为:
$$\begin{aligned} &3 \ x \end{aligned}$$
这表示变量 $a_x$ 的值变为一个不同的整数。
最后,询问事件的格式为:
$$\begin{aligned} &4 \ x \ y \end{aligned}$$
这询问 $a_x$ 和 $a_y$ 是否相等。如果根据所有过去的事件可以证明 $a_x$ 和 $a_y$ 相等,你必须输出 **Yes**。类似地,如果可以证明它们不相等,你必须输出 **No**。如果两者都无法证明,你必须输出 **Unknown**。
输入格式
输入包含一个单独的测试用例,格式如下,其中输入的所有值均为整数。
$$\begin{aligned} &N \ M \\ &\text{event}_1 \\ &\vdots \\ &\text{event}_M \end{aligned}$$
整数 $N$ 是变量的数量($1 \leq N \leq 10^6$)。整数 $M$ 是事件的数量($1 \leq M \leq 500,000$)。$M$ 个事件按时间顺序给出。每个事件的格式如上所述。在观察事件或询问事件中,保证 $1 \leq x < y \leq N$。在变更事件中,保证 $1 \leq x \leq N$。
在任何时刻,都保证存在至少一种对所有 $N$ 个变量的赋值,不与已给出的任何信息相矛盾。
输出格式
对于每个询问事件,输出 **Yes**、**No** 或 **Unknown**,每个输出占一行。
说明/提示
翻译由 DeepSeek V3.2 完成