题目描述
N 個の頂点と M 本の辺からなる、単純(自己ループおよび多重辺を含まない)かつ連結な無向グラフが与えられます。
i = 1, 2, …, M について、i 番目の辺は頂点 ui と頂点 vi を結ぶ無向辺です。
各頂点を白または黒で塗る方法であって、下記の 2 つの条件をともに満たすものが存在するかを判定し、存在する場合はその一例を示してください。
- 1 個以上の頂点が黒で塗られている。
- すべての i = 1, 2, …, K について、下記の条件が成り立つ。
- 頂点 pi と「黒で塗られた頂点のうち頂点 pi からの距離が最小であるもの」の距離がちょうど di である。
ここで、頂点 u と頂点 v の距離は、u と v を結ぶパスの辺の本数としてあり得る最小値として定義されます。
输入格式
入力は以下の形式で標準入力から与えられる。
N M u1 v1 u2 v2 ⋮ uM vM K p1 d1 p2 d2 ⋮ pK dK
输出格式
問題文中の条件を満たすように各頂点を白または黒で塗る方法が存在しない場合は、No
を出力せよ。
存在する場合は、下記の形式の通り、1 行目に Yes
と出力し、2 行目に各頂点を塗る方法を表す文字列 S を出力せよ。 ここで、S は長さ N の文字列であり、i = 1, 2, …, N について S の i 文字目は、頂点 i を黒で塗るとき 1 、白で塗るとき 0 である。
Yes S
答えが複数ある場合、どれを出力しても正解とみなされる。
题目大意
给一个 N 个点 M 条边的无向简单联通图和 K 个限制,你需要将结点染成黑白两色满足所有限制,每个限制形如 pi,di 表示点 pi 距离最近的黑点的距离恰好等于 di,问是否存在染色方案,若存在给出任意一组解。
两点之间的距离定义为它们之间的最短路径上的边数。特别的,任何点到其自身的距离为 0。
N≤2000,N−1≤m≤min{n(n−1)/2,2000},K≤N
提示
制約
- 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
- 与えられるグラフは単純かつ連結
- 入力はすべて整数
Sample Explanation 1
例えば、頂点 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 が成り立ちます。
Sample Explanation 2
問題文中の条件を満たすように各頂点を白または黒で塗る方法が存在しないため、No
を出力します。