#ijpc2015c. [ijpc2015_c]しりとり木

[ijpc2015_c]しりとり木

問題文

半角英小文字からなる文字列がmm個与えられる。

文字列1つにつき1つ、計mm個の頂点からなる根付き木であって、

  • 葉以外の頂点はちょうど2つの子を持つ
  • 頂点iiが頂点ccの親のとき、 ii 番目の文字列の最後の文字が cc 番目の文字列の最初の文字に一致する

が成立するような木が存在するか判定せよ。

存在するときは構成せよ

13:35 問題文の誤字を修正

申し訳ありませんが、B問題のテストケースに間違いがあったため、テストケースを16:30より追加します。(16:10)


入力

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

NN s1s_1 . . . sNs_N

  • 一行目には文字列の数 N(1N104)N(1≦N≦10^4) が与えられる。
  • 続く NN 行には、文字列が与えられる。 i+1(1iN)i+1 (1≦i≦N) 行目にはii 番目の文字列が与えられる。
  • それぞれの文字列の長さは1文字以上10文字以下である。

部分点

この問題に部分点は存在しない。

コンテストへの影響を鑑みて、従来のテストケースに99点、全てのテストケースに1点とします。(16:32)

出力

出力は標準出力に行い、末尾に改行を入れること。

条件を満たす木が存在しない場合、1行目に"NO"と出力する。

条件を満たす木が存在する場合、出力はN+1N+1 行からなる。 1行目に"YES"と出力し、その後 i+1(1iN)i+1 (1≦i≦N) 行目にi番目の文字列の親の番号を出力する。もしi番目の文字列が根なら0を出力する。


入力例11


5
ab
bc
bd
de
df

出力例11


YES
0
1
1
3
3

入力例22


7
yokozuna
takayuta
namonaki
reew
semiexp
snuke
tozangezan

出力例22


NO

入力例33


1
i

出力例33


YES
0