No.1477 Lamps on Graph
タグ : / 解いたユーザー数 179
作問者 : nok0 / テスター : fairy_lettuce 👑 ygussany PCTprobability むかで
問題文
頂点に $1$ から $N$ まで、辺に $1$ から $M$ までの番号がついた $N$ 頂点 $M$ 辺からなる単純無向グラフが与えられます。辺 $i$ は頂点 $u_i$ と頂点 $v_i$ を双方向に結んでいます。
このグラフの各頂点 $i$ にはある整数 $A_i$ が書かれています。
また、各頂点にはランプが置いてあり、最初は頂点 $B_1,B_2,\dots,B_K$ のランプのみが点灯しており、その他のランプは全て消灯しています。
あなたは以下の操作を $0$ 回以上任意の回数行うことができます。
ここでランプの状態を切り替えるとは、ランプが点灯しているならば消灯させ、消灯しているならば点灯させることを指します。
操作によって全てのランプを消灯させることは可能でしょうか。もし可能な場合は操作回数が最小になる手順を一つ示してください。(出力形式の具体例は出力欄やサンプルを参考にしてください。)
制約
- 入力は全て整数である。
- $1 \le N\le 10^5$
- $0 \le M\le \mathrm{min}(10^5, \frac{N(N-1)}{2})$
- $0 \le A_i \le 10^9$
- $1 \le u_i, v_i \le N $
- 与えられるグラフは単純無向グラフである。
- $1 \le K \le N$
- $1 \le B_1 < B_2 < \dots < B_K \le N$
入力
$N\ M$ $A_1\ A_2\ \dots\ A_N$ $u_1\ v_1$ $u_2\ v_2$ $\vdots$ $u_M\ v_M$ $K$ $B_1\ B_2\ \dots\ B_K$
出力
全てのランプを消灯させることが不可能である場合、-1
と出力してください。
可能である場合、以下の形式に従ってください。
操作が $Z$ 回からなるとき、以下のように $Z+1$ 行にわたって出力してください。
ここで $x_i$ は $i$ 回目の操作で選択する頂点の番号です。
$Z$ $x_1$ $x_2$ $\vdots$ $x_Z$
サンプル
サンプル1
入力
3 2 3 1 4 1 2 1 3 2 1 3
出力
1 1
最初、頂点 $1$ と頂点 $3$ のランプが点灯しています。
頂点 $1$ に対して操作を行うことを考えます。
まず、頂点 $1$ のランプの状態が切り替わり、消灯します。
頂点 $1$ と結ばれた頂点は頂点 $2$ と頂点 $3$ です。
頂点 $2$ については、 $A_1 = 3,A_2=1$ より $A_1 < A_2$ を満たさないので、頂点 $2$ のランプの状態は切り替わりません。
頂点 $3$ については、 $A_1 = 3,A_3=4$ より $A_1 < A_3$ を満たすので、頂点 $3$ のランプの状態が切り替わり、消灯します。
よって、頂点 $1$ に対して操作を行うことで、 $1$ 回で全てのランプを消灯させることができました。
操作を行わないで全てのランプを消灯させることはできないので、これが操作の最小回数です。
サンプル2
入力
3 0 100 200 300 3 1 2 3
出力
3 2 3 1
グラフが連結でない場合もあることに注意してください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。