atcoder#ARC079D. [ARC079F] Namori Grundy

[ARC079F] Namori Grundy

题目描述

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

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

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

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

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

输入格式

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

N N p1 p_1 p2 p_2 ... pN p_N

输出格式

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

题目大意

题目描述

高桥君有一个NN个点NN条边的有向图,点的的编号从11NN

高桥君的图有NN条边,形如:(p1,1),(p2,2),...,(pN,N)(p_1,1),(p_2,2),...,(p_N,N),保证图是弱连通的。其中,(u,v)(u,v)表示一条从点uuvv的单向边。“弱连通”是指:假如所有的边都是双向边,则图是连通图

高桥君为每个点设置了一个权值,aia_i表示点ii的权值。他希望图满足如下性质:

所有aia_i都是非负整数

对于每条边(i,j)(i,j),满足aiaja_i≠a_j

对于所有i,x(0x<ai)i,x(0\le x\lt a_i),存在一条边(i,j)(i,j)满足x=ajx=a_j

请你帮高桥君判断一下,这样图是否存在呢?

输入格式

NN

p1p_1 p2p_2 p3p_3 ...... pNp_N

输出格式

如果存在这样的图,输出POSSIBLE

否则输出IMPOSSIBLE

说明

2N2000002 \leq N \leq 200000

1piN1 \leq p_i \leq N

piip_i \ne i

保证给定的图是弱联通的

4
2 3 4 1
POSSIBLE
3
2 3 1
IMPOSSIBLE
4
2 3 1 1
POSSIBLE
6
4 5 6 5 6 4
IMPOSSIBLE

提示

制約

  • 2  N  200,000 2\ ≦\ N\ ≦\ 200,000
  • 1  pi  N 1\ ≦\ p_i\ ≦\ N
  • pi  i p_i\ \neq\ i
  • グラフは弱連結

Sample Explanation 1

{ai a_i } = {0, 1, 0, 1 0,\ 1,\ 0,\ 1 } か、{ai a_i } = = {1, 0, 1, 0 1,\ 0,\ 1,\ 0 } と割り当てることができます。

Sample Explanation 3

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