#AT2553. E - Nearest Black Vertex

E - Nearest Black Vertex

当前没有测试数据。

E - 最近的黑色顶点

得分:$500$ 分

题目描述

给定一个简单的连通无向图,图中有 $N$ 个顶点和 $M$ 条边(简单图不含自环和重边)。
对于 $i = 1, 2, \ldots, M$,第 $i$ 条边双向连接顶点 $u_i$ 和 $v_i$。

判断是否存在一种方式将每个顶点涂成黑色或白色,使得满足以下条件,并且如果存在一种方式,则输出其中一种。

  • 至少有一个顶点是黑色的。
  • 对于每个 $i = 1, 2, \ldots, K$,满足以下条件:
    • 顶点 $p_i$ 和一个黑色顶点之间的最短距离为 $d_i$。

这里,两个顶点 $u$ 和 $v$ 之间的距离是连接 $u$ 和 $v$ 的路径中边数最少的。

约束条件

  • $1 \leq N \leq 2000$
  • $N-1 \leq M \leq \min\lbrace N(N-1)/2, 2000 \rbrace$
  • $1 \leq u_i, v_i \leq N$
  • $0 \leq K \leq N$
  • $1 \leq p_1 \lt p_2 \lt \cdots \lt p_K \leq N$
  • $0 \leq d_i \leq N$
  • 给定的图是简单连通图。
  • 输入中的所有值都是整数。

输入

从标准输入中读入数据,格式如下所示:

NN MM

u1u_1 v1v_1

u2u_2 v2v_2

\vdots

uMu_M vMv_M

KK

p1p_1 d1d_1

p2p_2 d2d_2

\vdots

pKp_K dKd_K

输出

若不存在一种方式将每个顶点涂成黑色或白色来满足条件,则输出 No
否则,第一行输出 Yes,第二行输出表示顶点涂色的字符串 $S$,如下所示。
这里,$S$ 是一个长度为 $N$ 的字符串,对于每个 $i = 1, 2, \ldots, N$,$S$ 的第 $i$ 个字符为 $1$ 表示顶点 $i$ 涂成黑色,为 $0$ 表示涂成白色。

``` Yes $S$ ```

若有多个解,则可以输出其中任意一个。


5 5
1 2
2 3
3 1
3 4
4 5
2
1 0
5 2
Yes
10100

一种满足条件的方式是将顶点 $1, 3$ 涂成黑色,顶点 $2, 4, 5$ 涂成白色。
确实,对于每个 $i = 1, 2, 3, 4, 5$,令 $A_i$ 表示顶点 $i$ 和一个黑色顶点之间的最短距离,则有 $(A_1, A_2, A_3, A_4, A_5) = (0, 1, 0, 1, 2)$,其中 $A_1 = 0, A_5 = 2$。


5 5
1 2
2 3
3 1
3 4
4 5
5
1 1
2 1
3 1
4 1
5 1
No

无法通过将每个顶点涂成黑色或白色来满足条件,因此应输出 No


1 0
0
Yes
1