AT_abc293_d [ABC293D] Tying Rope

题目描述

有 $N$ 根绳子,每根绳子的一端被涂成红色,另一端被涂成蓝色。绳子的编号从 $1$ 到 $N$。 接下来要进行 $M$ 次操作。在第 $i$ 次操作中,将绳子 $A_i$ 的颜色为 $B_i$ 的一端与绳子 $C_i$ 的颜色为 $D_i$ 的一端连接起来。这里,颜色 `R` 表示红色,颜色 `B` 表示蓝色。对于每根绳子,相同颜色的端点不会被多次连接。 所有操作结束后,请输出所有连成一组的绳子中,形成环的组数 $X$ 和不形成环的组数 $Y$。 这里,连成一组的绳子集合 $\lbrace v_0, v_1, \ldots, v_{x-1} \rbrace$ 被认为是环状的,当且仅当可以重新排列 $v$ 的顺序,使得对于每个 $0 \leq i < x$,绳子 $v_i$ 和绳子 $v_{(i+1)\bmod x}$ 是连接在一起的。

输入格式

输入以如下格式从标准输入读入。 > $N$ $M$ $A_1$ $B_1$ $C_1$ $D_1$ $A_2$ $B_2$ $C_2$ $D_2$ $\vdots$ $A_M$ $B_M$ $C_M$ $D_M$

输出格式

对于所有连成一组的绳子,输出环状的组数 $X$ 和非环状的组数 $Y$,以空格分隔,按此顺序输出。

说明/提示

### 限制条件 - $1 \leq N \leq 2 \times 10^5$ - $0 \leq M \leq 2 \times 10^5$ - $1 \leq A_i, C_i \leq N$ - $(A_i, B_i) \neq (A_j, B_j),\ (C_i, D_i) \neq (C_j, D_j)\ (i \neq j)$ - $(A_i, B_i) \neq (C_j, D_j)$ - $N, M, A_i, C_i$ 是整数 - $B_i, D_i$ 只能是 `R` 或 `B` ### 样例解释 1 连成一组的绳子有 $ \lbrace 1 \rbrace $、$ \lbrace 2,4 \rbrace $、$ \lbrace 3,5 \rbrace $ 共 $3$ 组。其中 $ \lbrace 3,5 \rbrace $ 是环状的,$ \lbrace 1 \rbrace $ 和 $ \lbrace 2,4 \rbrace $ 不是环状的。因此 $X=1, Y=2$。 由 ChatGPT 4.1 翻译