難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Lexicographically Greatest Walk

作成者 askr_58

難易度(作成者設定) Lv.5

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

(writerが過去にXで公開した問題です。)

問題文

NN 頂点 MM 辺の有向グラフ GG が与えられます。GG の各頂点は 11 から NN の、各辺は 11 から MM の整数で番号づけられており、 1≤i≤M1\le i\le M について、辺 ii は頂点 UiU_i から頂点 ViV_i に向かう辺です。また、 1≤i≤N1\le i\le N について、頂点 ii には英小文字 CiC_i が書かれています。

空でない、有限の長さの英小文字列 XX が次の条件を満たす時、XX を「生成可能文字列」と呼びます。

  • GG 上のあるウォーク P=(P1,P2,⋯ ,P∣P∣)P=(P_1,P_2,\cdots,P_{|P|}) が存在して、その長さ ∣P∣|P| は XX の長さに等しく、かつ各 1≤i≤∣P∣1\le i\le |P| について CPiC_{P_i} は XX の ii 文字目に等しい。

生成可能文字列全体の集合を SS とします。 SS に辞書順における最大元が存在するか判定し、存在するならばそれを出力して下さい。

制約

  • 1≤N,M≤50001\le N,M\le 5000
  • 1≤Ui,Vi≤N(1≤i≤M)1\le U_i,V_i \le N(1\le i\le M)
  • (Ui,Vi)≠(Uj,Vj)(1≤i<j≤M)(U_i,V_i)\ne (U_j,V_j)(1\le i < j\le M)
  • CiC_i は英小文字 (1≤i≤N)(1\le i\le N)
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

N MN\ M U1 V1U_1\ V_1 ⋮\vdots UM VMU_M\ V_M C1 C2 ⋯ CNC_1\ C_2\ \cdots\ C_N

出力

SS に辞書順における最大元が存在しない場合、11 行目に No と出力せよ。存在する場合、 11 行目に Yes と出力し、 22 行目にその最大元を出力せよ。

サンプル 1

入力

3 3
1 2
2 2
1 3
b a b

出力

Yes
bb

生成可能文字列の例として b,aa,ba,baaaa,bb などが存在します。bb は bb を除く任意の生成可能文字列よりも辞書順で大きいことが証明できるので、答えは bb になります。

サンプル 2

入力

1 1
1 1
a

出力

No

生成可能文字列の例として、a,aa,aaa などが存在します。任意の生成可能文字列について、それよりも辞書順で大きな生成可能文字列が存在することが証明できるので、辞書順最大の生成可能文字列は存在しません。