No.2654 [Cherry 6th Tune] Re: start! (Black Sheep)
タグ : / 解いたユーザー数 24
作問者 : Kazun / テスター : 👑 AngrySadEight
導入
この問題は, 現在の Cherry コンテストの前身である Zelkova コンテスト開催の際に一番最初に作問した [Zelkova 8th Tune] Black Sheep をテーマに再度作問したものです.
問題文
この問題は, それぞれの"もの"の添字が 「0 始まり」か 「1 始まり」かに注意して問題文を読むこと.Black Sheep
Black Sheep において, 整数列の初項は第 $0$ 項であるとする.
$M \geq 2$ とする. 長さ $(M+1)$ の整数列 $B=(B_0, B_1, \dots, B_M)$ について, 以下を満たすような整数 $j$ が存在するとき, この整数列 $B$ は黒い列であるという.
- $0 \leq j \leq M$.
- $M$ 個の整数 $B_0, B_1, \dots, B_{j-1}, B_{j+1}, \dots, B_M$ は互いに等しく, その整数は $B_j$ とは異なる.
例えば, $(1,1,2), (3,4,3,3,3)$ は黒い列ではあるが, $(5,6,7,7,7), (8,8,9,9,9), (0,0,0,0)$ は黒い列ではない.
長さ $(M+1)$ の整数列 $C=(C_0,C_1, \dots, C_M)$ に対して, 以下の操作を$0$ 回以上行い, $C$ を黒い列にすることを目指す.
- 以下の $2$ つのうち, どちらか一方を選び, それを実行する.
- $0$ 以上 $M$ 以下の整数 $i$ を選び, $C$ の第 $i$ 項に $1$ 加算する.
- $0$ 以上 $M$ 以下の整数 $i$ を選び, $C$ の第 $i$ 項から $1$ 減算する.
$C$ を黒い列にするためには, 最低何回操作を行う必要があるか?
$(N+1)$ 頂点の単純無向グラフ $T$ が与えられる. この $T$ は木をなす.
$T$ における $(N+1)$ 個の頂点は頂点 $0,1,2, \dots, N$ と名付けられている. また, $T$ にある $N$ 本の辺のうち, $j~(1 \leq j \leq N)$ 番目の辺は頂点 $u_j$ と頂点 $v_j$ を結ぶ.
$x=1,2, \dots, N$ それぞれに対して, 以下の問いに答えよ.
- 頂点 $0$ から頂点 $x$ への単純パスを $(p_0, p_1, \dots, p_d)$ (ただし, $p_0=0, p_d=x$) とする. このとき, $d \geq 2$ か? そして, $d \geq 2$ であるならば, $C=(A_{p_0}, A_{p_1}, \dots, A_{p_d})$ に対して, Black Sheep を解け.
制約
- $1 \leq N \leq 2 \times 10^5$.
- $0 \leq A_i \leq 10^9 \quad (0 \leq i \leq N)$.
- $0 \leq u_j \leq N, 0 \leq v_j \leq N \quad (1 \leq j \leq N)$.
- $T$ は木をなす.
- 入力は全て整数である.
入力
入力は以下の形式で標準入力から与えられる.$N$ $A_0$ $A_1$ $\cdots$ $A_N$ $u_1$ $v_1$ $u_2$ $v_2$ $\vdots$ $u_N$ $v_N$
出力
出力は $N$ 行からなる.
第 $x~(1 \leq x \leq N)$ 行目には, 頂点 $0$ から頂点 $x$ への単純パスを $(p_0, p_1, \dots, p_d)$ としたとき, $d \geq 2$ であるならば,
$C=(A_{p_0}, A_{p_1}, \dots, A_{p_d})$ に対する, Black Sheep の解答を, $d \lt 2$ であるならば, -1
を出力せよ.
サンプル
サンプル1
入力
4 3 6 1 2 7 0 1 1 2 1 3 3 4
出力
-1 2 1 4
ここでは $x=1, x=4$ の場合を説明する.
$x=1$ の場合: 頂点 $0$ から頂点 $1$ への単純パスは $(0,1)$ である. よって, $d=1$ であり, $d \lt 2$ であるから,
-1
を出力しなければならない.$x=4$ の場合: 頂点 $0$ から頂点 $4$ への単純パスは $(0,1,3,4)$ である. よって, $d=3$ であり, $d \geq 2$ であるから, Black Sheep を解かなければならない.
$C:=(A_0, A_1, A_3, A_4)=(3,6,2,7)$ に対する Black Sheep について, 次のようにして, $4$ 回の操作で $C$ を黒い列にすることができる.
- $i=0$ を選択し, $C$ の第 $0$ 項に $1$ 加算し, $3$ から $4$ にする.
- $i=0$ を選択し, $C$ の第 $0$ 項に $1$ 加算し, $4$ から $5$ にする.
- $i=0$ を選択し, $C$ の第 $0$ 項に $1$ 加算し, $5$ から $6$ にする.
- $i=3$ を選択し, $C$ の第 $3$ 項から $1$ 減算し, $7$ から $6$ にする.
これにより, $C=(6,6,2,6)$ となり, 黒い列にできた. また, $4$ 手未満の操作で $C$ を黒い列にすることは不可能であることが証明できる. よって, $4$ が正解である.
サンプル2
入力
7 4 46 464 4646 46464 464646 4646464 46464646 0 3 0 5 3 7 4 7 1 7 2 4 4 6
出力
4642 50642 -1 46460 -1 4688278 4642
サンプル3
入力
5 1 2 4 8 16 32 0 1 0 2 0 3 0 4 0 5
出力
-1 -1 -1 -1 -1
木 $T$ が頂点 $0$ を中心とするスターの場合, $x=1,2, \dots, N$ 全てに対して, $(0, x)$ が頂点 $0$ から頂点 $x$ への単純パスになる. つまり, $d=1$ であるから, -1
を $N$ 行出力しなければならない.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。