AtCoder Regular Contest 030
翻译中…
Problem Statement
翻译中…
$n$ 個の頂点と $m$ 本の辺から成る有向グラフがあります.$n$ 個の頂点は, $1$ から $n$ の相異なる整数で番号付けされています. 各頂点には,a から z のアルファベットが $1$ つ書かれています.
翻译中…
あなたはこのグラフを好きな頂点から開始し,各頂点を任意の順番で訪問することで,ちょうど $k$ 個のアルファベットを回収したいです. 頂点は何度も訪問することができ,その頂点にアルファベットが存在する場合は任意の訪問タイミングで回収することが出来ますが,アルファベットは一度回収すると無くなります.必要がなければ,回収しなくても良いです.
翻译中…
あなたは,ただ回収するだけでは退屈であると思ったので,それらの $k$ 個のアルファベットを回収した順番に並べたときに辞書順最小になるように回収することにしました.
翻译中…
そのような回収方法を行ったときの,$k$ 個のアルファベットを,回収した順番に出力しなさい. $k$ 個のアルファベットを回収する方法が存在しない場合は,-1 を出力しなさい.
翻译中…
Input
翻译中…
入力は以下の形式で標準入力から与えられる.
翻译中…
n m k
c_1 c_2 … c_n
a_1 b_1
a_2 b_2
:
a_{m} b_{m}
翻译中…
$1$行目には,グラフの頂点の数を表す整数$n (1 ≦ n ≦ 300)$と 辺の数を表す整数$m (0 ≦ m ≦ 1000)$と回収したいアルファベットの数を表す整数$k (1≦k≦n)$が与えられる.$2$行目には,頂点$i$に書かれているアルファベット$c_i$(aからzの小文字アルファベット) が$n$個,スペース区切りで与えられる.$3$行から$m$行,グラフの$i$番目の有向辺が繋いでいる頂点の番号$a_i$と$b_i (1≦a_i,b_i≦n)$が与えられる. これは,$i$番目の辺が,$a_i$から$b_i$に移動できる有向辺であることを表す.- 与えられるグラフに自己辺や多重辺は存在しないが,逆辺は存在することがある.また,連結であることは保障されていない.
翻译中…
Output
翻译中…
$1$ 行目に,辞書順最小となるように回収した $k$ 個のアルファベットを,回収した順番に出力せよ.$k$ 個のアルファベットを回収する方法が存在しない場合は,-1 を出力せよ.最後に改行を忘れないこと.
翻译中…
样例
Input #1
4 4 3
a b b a
1 2
2 3
3 1
4 3
Output #1
aab
この入出力例を説明する図は以下の通りとなります.頂点 $4$ → $3$ → $1$ → $2$ と移動する過程で,頂点 $4$ の `a`,頂点 $1$ の `a`,そして頂点 $2$ の `b` を順番に回収することで辞書順最小の答えとなります.

Input #2
5 4 4
d a b c a
1 2
2 3
3 4
2 5
Output #2
dabc
Input #3
5 4 3
d a b c a
1 2
2 3
3 4
2 5
Output #3
abc
Input #4
3 0 2
a b c
Output #4
-1
$3$ つの頂点は孤立しており,どの頂点から開始しても,ちょうど $2$ 個のアルファベットを回収することはできません.
题目信息
题面与样例版权归 AtCoder 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。