AT_abc396_e [ABC396E] Min of Restricted Sum
题目描述
给定整数 $N, M$ 和长度为 $M$ 的整数序列 $X=(X_1,X_2,\ldots,X_M)$、$Y=(Y_1,Y_2,\ldots,Y_M)$、$Z=(Z_1,Z_2,\ldots,Z_M)$。其中,保证 $X$ 和 $Y$ 的所有元素均在 $1$ 至 $N$ 的范围内。
定义长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\ldots,A_N)$ 为 **好的整数序列**,当且仅当满足以下条件:
- 对于所有满足 $1 \leq i \leq M$ 的整数 $i$,有 $A_{X_i} \oplus A_{Y_i} = Z_i$,其中 $\oplus$ 表示异或运算。
请判断是否存在这样的好的整数序列。若存在,请找出使得元素总和 $\displaystyle \sum_{i=1}^N A_i$ 最小的好的整数序列,并输出该序列。
关于异或(XOR)的定义:
对于非负整数 $A$ 和 $B$,它们的异或 $A \oplus B$ 定义如下:
- $A \oplus B$ 的二进制表示中,$2^k$ 位($k \geq 0$)的值为 $1$,当且仅当 $A$ 和 $B$ 在 $2^k$ 位上的值不同;否则为 $0$。
例如,$3 \oplus 5 = 6$(二进制表示为 $011 \oplus 101 = 110$)。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $M$
> $X_1$ $Y_1$ $Z_1$
> $X_2$ $Y_2$ $Z_2$
> $\vdots$
> $X_M$ $Y_M$ $Z_M$
输出格式
若不存在好的整数序列,输出 $-1$。
若存在,则输出满足总和最小的好的整数序列,元素间用空格分隔。
若存在多个总和最小的序列,输出任意一个均可。
说明/提示
### 约束条件
- $1 \leq N \leq 2 \times 10^5$
- $0 \leq M \leq 10^5$
- $1 \leq X_i, Y_i \leq N$
- $0 \leq Z_i \leq 10^9$
- 输入中的所有值均为整数
### 样例解释 1
序列 $A=(0, 3, 4)$ 满足 $A_1 \oplus A_2 = 3$ 和 $A_1 \oplus A_3 = 4$,因此是好的整数序列。其他可能的序列如 $A=(1, 2, 5)$ 或 $A=(7, 4, 3)$ 也满足条件,但总和最小的序列是 $A=(0, 3, 4)$。
### 样例解释 2
不存在满足条件的好的整数序列,因此输出 $-1$。
翻译由 DeepSeek R1 完成