问题陈述。
给定一个简单(无自循环和多条边)且相连的无向图,图中有 N 个顶点和 M 条边。
对于 i=1,2,…,M ,第 i 条边是连接顶点 ui 和顶点 vi 的无向边。
请判断是否有一种将每个顶点涂成白色或黑色的方法同时满足以下 2 两个条件,如果有,请举例说明。
- 1 多个顶点被涂成黑色。
- 对于所有 i=1,2,…,K ,以下条件都成立。
- 顶点 pi 与 "与顶点 pi 距离最小的涂黑顶点 "之间的距离正好是 di 。
这里,顶点 u 和顶点 v 之间的距离定义为连接 u 和 v 的路径中可能的最小边数。
限制。
- 1≤N≤2000
- N−1≤M≤min{N(N−1)/2,2000}
- 1≤ui,vi≤N
- 0≤K≤N
- 1≤p1<p2<⋯<pK≤N
- 0≤di≤N
- 给定图形简单且连通
- 所有输入均为整数
输入。
输入通过标准输入,格式如下。
N M
u1 v1
u2 v2
⋮
uM vM
K
p1 d1
p2 d2
⋮
pK dK
输出。
如果无法将每个顶点涂成白色或黑色以满足问题陈述中的条件,则输出 "否"。
如果存在,则在第 1 行输出 "是",并在第 2 行输出代表每个顶点涂色方法的字符串 S ,格式如下。 其中,{7595951638}是长度为 N 的字符串, i=1,2,…,N 的 S 的 i 字符为 1 ,将顶点 i 绘制为黑色时为 1 ,将顶点 i 绘制为白色时为 0 。
Yes
S
如果答案不止一个,则以输出的答案为准。
入力例 1
5 5
1 2
2 3
3 1
3 4
4 5
2
1 0
5 2
输出示例 1
Yes
10100
例如,将顶点 1,3 涂成黑色,将顶点 2,4,5 涂成白色,就满足了问题陈述中的条件。
事实上,对于 i=1,2,3,4,5 ,顶点 i 与 "与顶点 i 距离最小的涂成黑色的顶点 "之间的距离是 Ai 和 (A1,A2,A3,A4,A5)=(0,1,0,1,2) ,尤其是 A1=0,A5=2 成立。
入力例 2
5 5
1 2
2 3
3 1
3 4
4 5
5
1 1
2 1
3 1
4 1
5 1
输出示例 2
No
输出 "否",因为无法将每个顶点涂成白色或黑色以满足问题陈述中的条件。