atcoder#ARC079D. [ARC079F] Namori Grundy

[ARC079F] Namori Grundy

配点 : 800800

問題文

NN 頂点 NN 辺の有向グラフを考えます。頂点には番号 1,2,...,N1, 2, ..., N が振られているものとします。

このグラフは (p1,1),(p2,2),...,(pN,N)(p_1, 1), (p_2, 2), ..., (p_N, N)NN 本の辺からなり、弱連結です。 なお、この問題では頂点 uu から頂点 vv へ入り込む辺を (u,v)(u, v) と表します。また、弱連結とは、辺を無向辺として見るとグラフ全体が連結になっているという意味です。

このグラフの頂点に、以下の条件を満たすように値を割り当てたいです。頂点 ii に割り当てる値を aia_i とします。

  • aia_i は、00 以上の非負整数である。
  • すべての辺 (i,j)(i, j) について、aiaja_i \neq a_j である。
  • すべての頂点 ii と整数 x(0x<ai)x(0 \leq x < a_i) について、辺 (i,j)(i, j) が存在し、かつ x=ajx = a_j を満たすような頂点 jj が存在する。

この条件をみたすような割り当て方が存在するか判定してください。

制約

  • 2N200,0002 \leq N \leq 200,000
  • 1piN1 \leq p_i \leq N
  • piip_i \neq i
  • グラフは弱連結

入力

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

NN

p1p_1 p2p_2 ... pNp_N

出力

うまく値を割り当てられるならば POSSIBLE、割り当てられないならば IMPOSSIBLE を出力する。

4
2 3 4 1
POSSIBLE

{aia_i} = {0,1,0,10, 1, 0, 1} か、{aia_i} == {1,0,1,01, 0, 1, 0} と割り当てることができます。

3
2 3 1
IMPOSSIBLE
4
2 3 1 1
POSSIBLE

{aia_i} == {2,0,1,02, 0, 1, 0} と割り当てることができます。

6
4 5 6 5 6 4
IMPOSSIBLE