AT_arc214_b [ARC214B] Missing Number in Graph

题目描述

有一个连通的简单无向图,包含 $N$ 个顶点和 $M$ 条边,顶点编号为 $1, \dots ,N$,边编号为 $1, \dots ,M$。第 $i$ 条边连接顶点 $A_i$ 和 $B_i$。此外,还有 $N+1$ 张卡片,分别写有 $0$ 到 $N$ 的整数。 Snuke 按如下顺序进行了操作: 1. 将每个顶点放上一张卡片,剩下的一张卡片被他吃掉。 2. 对于每一条边 $i\ (1 \le i \le M)$,在第 $i$ 条边上写下放在顶点 $A_i$ 和 $B_i$ 上的卡片上数字的按位异或(bitwise XOR)结果。记该数为 $X_i$。 3. 丢弃所有放在顶点上的卡片。 现在给定关于图的信息($N,M,A_1,\dots ,A_M,B_1,\dots ,B_M,X_1,\dots ,X_M$),请确定 Snuke 吃掉的卡片上的整数。如果不能唯一确定,输出 `-1`。保证所给的 $X$ 能通过题目中的操作得到。 给定 $T$ 组测试数据,请求解每组数据。 什么是按位异或(bitwise XOR)?非负整数 $A$ 和 $B$ 的按位异或 $A \oplus B$ 定义如下: - $A \oplus B$ 的二进制表示中,第 $2^k$ 位($k \geq 0$)如果 $A$ 和 $B$ 的二进制表示中同一位正好有一个为 $1$,则为 $1$,否则为 $0$。 例如,$3 \oplus 5 = 6$(二进制:$011 \oplus 101 = 110$)。 一般情况下,$k$ 个非负整数 $p_1,p_2,p_3,\dots,p_k$ 的按位异或定义为 $(\dots((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k)$,且可以证明,这与运算的顺序无关。

输入格式

输入由标准输入给出,格式如下: > $T$ $\text{case}_1$ $\text{case}_2$ $\vdots$ $\text{case}_T$ 每组测试数据格式如下: > $N$ $M$ $A_1$ $B_1$ $X_1$ $A_2$ $B_2$ $X_2$ $\vdots$ $A_M$ $B_M$ $X_M$

输出格式

输出共 $T$ 行。 第 $i$ 行输出第 $i$ 组测试数据 Snuke 吃掉的卡片上的整数;如果无法唯一确定,则输出 `-1`。

说明/提示

### 样例解释 1 对于第一组测试数据,图如下所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_arc214_b/15063facc0e603b14b22609061747f0de579c8c97f36a603b7e6980b37c67ea8.png) 顶点 $1$ 和 $2$ 上可能的卡片数字对有 $(1,2)$ 和 $(2,1)$,无论哪种,Snuke 吃掉的卡片上的数字都是 $0$。 对于第二组测试数据,Snuke 吃掉卡片的数字可能是 $0$ 或 $1$,都成立。 对于第三组测试数据,图如下所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_arc214_b/fbf68b714d2ace7650ff055a1f5defc8440b24e51a6c06c6c08bcb72f002925a.png) ### 数据范围 - $1 \le T \le 10^4$ - $1 \le N \le 2 \times 10^5$ - $0 \le M \le 2 \times 10^5$ - $1 \le A_i,B_i \le N$ - 给定的图是连通的简单无向图。 - $X_1,\dots ,X_M$ 可以通过上述操作得到。 - 所有测试用例 $N$ 之和不超过 $2 \times 10^5$。 - 所有测试用例 $M$ 之和不超过 $2 \times 10^5$。 - 所有输入值均为整数。 由 ChatGPT 5 翻译