問題一覧 >
通常問題
No.2998 Rainbow Christmas Tree
レベル :
/ 実行時間制限 : 1ケース 3.000秒 / メモリ制限
: 512 MB / スペシャルジャッジ問題
(複数の解が存在する可能性があります)
タグ :
/
解いたユーザー数 9
作問者 : 👑
ygussany
問題文最終更新日: 2024-12-22 21:45:37
ストーリー
Y.Y. 王国のクリスマスには,道路網の一部をクリスマスツリーに見立てて,町全体を順々にライトアップする風習があります.
毎年様々な色と形のクリスマスツリーを道路網上に作ってきましたが,今年は過去のクリスマスツリーの一部を上手く組み合わせて,虹色に輝くク リ ス マ ス ツ リ ー を作りたいと考えました.
問題文
1 1 1 から N N N の相異なる番号が付いた N N N 個の頂点があり,その上で頂点 1 1 1 を根とする全域有向木が K K K 個,頂点 N N N を根とする全域有向木が ( N − 1 − K ) (N - 1 - K) ( N − 1 − K ) 個与えられます.
これらの ( N − 1 ) (N - 1) ( N − 1 ) 個の全域有向木からそれぞれ 1 1 1 本ずつの辺を選んで全域有向木を作ることが可能かどうかを判定し,可能な場合はその一例を示してください.
全域有向木とは
(辺の向きを無視して)連結な有向グラフであって,ちょうど 1 1 1 つの頂点が自身に入る辺を持たず,それ以外の全ての頂点が自身に入る辺をちょうど 1 1 1 本ずつ持つようなものを有向木 と呼びます.
有向木において入る辺を持たない頂点を根 と呼び,指定された頂点を全て含むような有向木を全域有向木 と呼びます.
入力
N K N\ \ K N K
P 1 , 1 P 1 , 2 ⋯ P 1 , N P_{1, 1} \ \ P_{1, 2} \ \cdots \ P_{1,N} P 1 , 1 P 1 , 2 ⋯ P 1 , N
⋮ \ \ \vdots ⋮
P N − 1 , 1 P N − 1 , 2 ⋯ P N − 1 , N P_{N-1, 1} \ \ P_{N-1, 2} \ \cdots \ P_{N-1,N} P N − 1 , 1 P N − 1 , 2 ⋯ P N − 1 , N
2 ≤ N ≤ 1000 2 \le N \le 1000 2 ≤ N ≤ 1000
0 ≤ K ≤ N − 1 0 \le K \le N - 1 0 ≤ K ≤ N − 1
0 ≤ P i , j ≤ N 0 \le P_{i,j} \le N 0 ≤ P i , j ≤ N かつ P i , j ≠ j P_{i,j} \neq j P i , j = j ( 1 ≤ i ≤ N − 1 , 1 ≤ j ≤ N ) (1 \le i \le N - 1,\ 1 \le j \le N) ( 1 ≤ i ≤ N − 1 , 1 ≤ j ≤ N )
P i , 1 = 0 P_{i,1} = 0 P i , 1 = 0 ( 1 ≤ i ≤ K ) (1 \le i \le K) ( 1 ≤ i ≤ K )
P i , N = 0 P_{i,N} = 0 P i , N = 0 ( K + 1 ≤ i ≤ N − 1 ) (K + 1 \le i \le N - 1) ( K + 1 ≤ i ≤ N − 1 )
各 i i i ( 1 ≤ i ≤ N − 1 ) (1 \le i \le N - 1) ( 1 ≤ i ≤ N − 1 ) について,P i , j P_{i,j} P i , j ( 1 ≤ j ≤ N ) (1 \le j \le N) ( 1 ≤ j ≤ N ) は以下の形式で i i i 番目の全域有向木を定める:
P i , j = 0 P_{i,j} = 0 P i , j = 0 なら頂点 j j j は根であり,そうでないなら頂点 j j j に入る唯一の辺は P i , j P_{i,j} P i , j を始点とする P i , j → j P_{i,j} \to j P i , j → j である.
出力
( N − 1 ) (N - 1) ( N − 1 ) 個の全域有向木からそれぞれ 1 1 1 本ずつの辺を選んで全域有向木を作ることが不可能な場合は No
を出力せよ.
作ることが可能な場合は 1 1 1 行目に Yes
を出力し,2 2 2 行目に以下の形式でそのような全域有向木の一例を出力せよ.
複数の正解がある場合,そのうちのどれを出力しても正答と判定される.
Q 1 Q 2 ⋯ Q N Q_1 \ \ Q_2 \ \cdots \ Q_N Q 1 Q 2 ⋯ Q N
( Q 1 , Q 2 , … , Q N ) (Q_1, Q_2, \dots, Q_N) ( Q 1 , Q 2 , … , Q N ) は ( 0 , 1 , … , N − 1 ) (0, 1, \dots, N - 1) ( 0 , 1 , … , N − 1 ) の並べ替えである.
Q j ≠ 0 Q_j \neq 0 Q j = 0 なら P Q j , j ≠ 0 P_{Q_j, j} \neq 0 P Q j , j = 0 である.
Q j Q_j Q j ( 1 ≤ j ≤ N ) (1 \le j \le N) ( 1 ≤ j ≤ N ) は以下の形式で全域有向木を定める:
Q j = 0 Q_j = 0 Q j = 0 なら頂点 j j j は根であり,そうでないなら頂点 j j j に入る唯一の辺は Q j Q_j Q j 番目の全域有向木から選ばれた P Q j , j → j P_{Q_j, j} \to j P Q j , j → j である.
サンプル
サンプル 1
入力サンプルをコピー
入力
3 1
0 1 2
2 3 0
出力
Yes
2 0 1
1 1 1 番目の全域有向木は 1 → 2 → 3 1 \to 2 \to 3 1 → 2 → 3 ,2 2 2 番目の全域有向木は 1 ← 2 ← 3 1 \leftarrow 2 \leftarrow 3 1 ← 2 ← 3 という形をしています.
1 1 1 番目から頂点 3 3 3 に入る辺 2 → 3 2 \to 3 2 → 3 を選び,2 2 2 番目から頂点 1 1 1 に入る辺 1 ← 2 1 \leftarrow 2 1 ← 2 を選ぶことで,1 ← 2 → 3 1 \leftarrow 2 \to 3 1 ← 2 → 3 という形の,頂点 2 2 2 を根とする全域有向木を作ることができます.
サンプル 2
入力サンプルをコピー
入力
7 6
0 1 1 2 6 2 5
0 3 7 1 1 5 1
0 4 1 1 1 4 2
0 1 5 2 1 4 3
0 1 2 1 1 1 6
0 4 6 1 4 4 4
出力
Yes
0 5 4 1 2 3 6
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。