AT_keyence2020_e Bichromization
题目描述
有一个包含 $N$ 个顶点和 $M$ 条边的连通无向图。第 $i$ 条边($1 \leq i \leq M$)连接顶点 $U_i$ 和顶点 $V_i$,且为双向边。此外,给定 $N$ 个整数 $D_1, D_2, \ldots, D_N$。
请判断是否存在一种方案,可以为该图的每个顶点分配白色或黑色,并为每条边分配一个 $1$ 到 $10^9$ 之间的整数权值,使得满足以下条件。如果存在,请给出一种满足条件的分配方案。
- 被分配为白色和黑色的顶点都至少有一个。
- 对于每个顶点 $v$($1 \leq v \leq N$),满足以下条件:
- 从顶点 $v$ 出发,经过若干条边,移动到一个与 $v$ 分配颜色不同的顶点时,所需的最小总代价恰好为 $D_v$。
其中,图上的移动代价指的是经过的所有边的权值之和。
输入格式
输入以如下格式从标准输入读入。
> $N$ $M$ $D_1$ $D_2$ $\ldots$ $D_N$ $U_1$ $V_1$ $U_2$ $V_2$ $\vdots$ $U_M$ $V_M$
输出格式
如果无法分配,输出一行 `-1`。
如果可以分配,输出一种分配方案,格式如下:
> $S$
> $C_1$
> $C_2$
> $\vdots$
> $C_M$
其中:
- 第 $1$ 行的 $S$ 是一个长度为 $N$ 的字符串,第 $i$ 个字符($1 \leq i \leq N$)为 `W` 表示顶点 $i$ 分配为白色,为 `B` 表示分配为黑色。
- 第 $i+1$ 行($1 \leq i \leq M$)的 $C_i$ 表示第 $i$ 条边分配的权值(输出为整数)。
说明/提示
## 限制条件
- $2 \leq N \leq 100\,000$
- $1 \leq M \leq 200\,000$
- $1 \leq D_i \leq 10^9$
- $1 \leq U_i, V_i \leq N$
- 给定的图是连通的,不包含自环和重边。
- 所有输入值均为整数。
## 样例解释 1
如输出样例所示进行颜色和权值分配时,例如从顶点 $5$ 出发,经过顶点 $4$ 再到顶点 $2$,可以到达一个与顶点 $5$ 颜色不同的顶点,此时总代价为 $7$,满足条件。对其他顶点也可以验证满足条件。
由 ChatGPT 4.1 翻译