AT_agc018_f [AGC018F] Two Trees

题目描述

给定两棵 $N$ 个节点的有根树,节点编号均为 $1\sim N$。第一棵树中,节点编号为 $i$ 的父亲编号为 $A_i$,若节点 $i$ 是根节点,则 $A_i=-1$;第二棵树中,节点编号为 $i$ 的父亲编号为 $B_i$,若节点 $i$ 是根节点,则 $B_i=-1$。 请你构造一个长度为 $N$ 的整数序列 $X$,要求满足以下条件: - 对于任意节点,设以其为根的子树内节点的编号为 $a_1,a_2,\cdots,a_k$,有 $\left|\sum\limits_{i=1}^kX_{a_i}\right|=1$。 判断是否存在满足条件的整数序列 $X$,若存在,给出任意一种合法方案。

输入格式

第一行一个正整数 $N$。 第二行 $N$ 个整数 $A_i$,表示第一棵树内节点 $i$ 的父亲编号(如果是根,则 $A_i=-1$)。 第三行 $N$ 个整数 $B_i$,表示第二棵树内节点 $i$ 的父亲编号(如果是根,则 $B_i=-1$)。

输出格式

若不存在满足条件的方案,一行输出 `IMPOSSIBLE`。 若存在满足条件的方案,第一行输出 `POSSIBLE`,第二行 $N$ 个整数 $X_1,X_2,\cdots,X_N$,用空格隔开。

说明/提示

### 样例 $\textbf 1$ 解释 以节点 $3$ 为例,其子树内有节点 $3,1,2$,根据样例输出的 $X$,有 $|X_3+X_1+X_2|=|-1+1-1|=1$,满足题目要求。其他节点可以同样地验证,发现满足题目要求。 ### 样例 $\textbf 2$ 解释 可以证明,无法构造出一个满足题目要求的序列,因此无解,输出了 `IMPOSSIBLE`。 ### 数据范围 - $1\le N\le 10^5$。 - 若在第一棵树内,节点 $i$ 不是根,则 $1\le A_i\le N$。 - 若在第一棵树内,节点 $i$ 是根,则 $A_i=-1$。 - 若在第二棵树内,节点 $i$ 不是根,则 $1\le B_i\le N$。 - 若在第二棵树内,节点 $i$ 是根,则 $B_i=-1$。 - 保证输入的是一棵合法的树。