AT_abc429_e [ABC429E] Hit and Away
Description
$ N $ 頂点 $ M $ 辺の単純連結無向グラフ $ G $ が与えられます。
$ G $ の頂点および辺はそれぞれ頂点 $ 1,2,\ldots,N $ 、辺 $ 1,2,\ldots,M $ と番号づけられており、 辺 $ i $ は頂点 $ U_i $ と頂点 $ V_i $ を結んでいます。
辺で結ばれている頂点の間は双方向に時間 $ 1 $ で移動することができます。
また、各頂点は安全か危険かのどちらかであり、その状態は `S` と `D` のみからなる長さ $ N $ の文字列 $ S $ によって与えられます。
具体的には、 $ S $ の $ i $ 文字目 $ (1\leq i\leq N) $ が `S` のとき頂点 $ i $ は安全であり、`D` のとき頂点 $ i $ は危険です。
ここで、安全な頂点が $ 2 $ つ以上、危険な頂点が $ 1 $ つ以上あることが保証されます。
危険な頂点 $ v $ それぞれについて、次の値を求めてください。
> ある安全な頂点から出発し、 $ v $ を経由し、 **出発した頂点と異なる** 安全な頂点へ移動するのにかかる時間としてあり得る最小値
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ U_1 $ $ V_1 $ $ U_2 $ $ V_2 $ $ \vdots $ $ U_M $ $ V_M $ $ S $
Output Format
$ G $ 上の危険な頂点の個数を $ K $ として、 $ K $ 行出力せよ。
$ i $ 行目 $ (1\leq i\leq K) $ には、危険な頂点を頂点番号の昇順に並べた時に $ i $ 番目に来る頂点についての答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
危険な頂点は(頂点番号について昇順に)頂点 $ 3 $ と $ 4 $ です。
頂点 $ 3 $ については、頂点 $ 1 $ $ \to $ 頂点 $ 3 $ $ \to $ 頂点 $ 2 $ と移動するときなどが条件をみたします。
この移動にかかる時間は $ 2 $ であり、このときが最小です。
よって、 $ 1 $ 行目に $ 2 $ を出力します。
頂点 $ 4 $ については、頂点 $ 1 $ $ \to $ 頂点 $ 3 $ $ \to $ 頂点 $ 4 $ $ \to $ 頂点 $ 5 $ と移動するときなどが条件をみたします。
この移動にかかる時間は $ 3 $ であり、かかる時間が $ 2 $ 以下の条件をみたす移動方法がないため、このときが最小です。
よって、 $ 2 $ 行目に $ 3 $ を出力します。
### Sample Explanation 2
危険な頂点は頂点 $ 3 $ です。
頂点 $ 1 $ $ \to $ 頂点 $ 2 $ $ \to $ 頂点 $ 3 $ $ \to $ 頂点 $ 2 $ と移動するときなどが条件をみたします。
この移動にかかる時間は $ 3 $ であり、このときが最小です。
頂点 $ 2 $ $ \to $ 頂点 $ 3 $ $ \to $ 頂点 $ 2 $ などの移動は、「出発した頂点と異なる」という条件をみたしていないことに注意してください。
### Constraints
- $ 3\leq N\leq 2\times 10^5 $
- $ N-1\leq M\leq 2\times 10^5 $
- $ 1\leq U_i,V_i\leq N $
- $ U_i\neq V_i $
- $ i\neq j $ ならば $ \{ U_i,V_i \}\neq \{ U_j,V_j \} $
- $ S $ は `S` と `D` のみからなる長さ $ N $ の文字列
- $ N,M,U_i,V_i $ はすべて整数
- $ G $ は連結である。
- 安全な頂点が $ 2 $ つ以上存在する。
- 危険な頂点が $ 1 $ つ以上存在する。