AT_agc018_f.[AGC018F] Two Trees

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定两棵 NN 个节点的有根树,节点编号均为 1∼N1\sim N。第一棵树中,节点编号为 ii 的父亲编号为 AiA_i,若节点 ii 是根节点,则 Ai=−1A_i=-1;第二棵树中,节点编号为 ii 的父亲编号为 BiB_i,若节点 ii 是根节点,则 Bi=−1B_i=-1。

请你构造一个长度为 NN 的整数序列 XX,要求满足以下条件:

  • 对于任意节点,设以其为根的子树内节点的编号为 a1,a2,⋯ ,aka_1,a_2,\cdots,a_k,有 ∣∑i=1kXai∣=1\left|\sum\limits_{i=1}^kX_{a_i}\right|=1。

判断是否存在满足条件的整数序列 XX,若存在,给出任意一种合法方案。

输入格式

第一行一个正整数 NN。

第二行 NN 个整数 AiA_i,表示第一棵树内节点 ii 的父亲编号(如果是根,则 Ai=−1A_i=-1)。

第三行 NN 个整数 BiB_i,表示第二棵树内节点 ii 的父亲编号(如果是根,则 Bi=−1B_i=-1)。

输出格式

若不存在满足条件的方案,一行输出 IMPOSSIBLE。

若存在满足条件的方案,第一行输出 POSSIBLE,第二行 NN 个整数 X1,X2,⋯ ,XNX_1,X_2,\cdots,X_N,用空格隔开。

输入输出样例

  • 输入#1

    5
    3 3 4 -1 4
    4 4 1 -1 1

    输出#1

    POSSIBLE
    1 -1 -1 3 -1
  • 输入#2

    6
    -1 5 1 5 1 3
    6 5 5 3 -1 3

    输出#2

    IMPOSSIBLE
  • 输入#3

    8
    2 7 1 2 2 1 -1 4
    4 -1 4 7 4 4 2 4

    输出#3

    POSSIBLE
    1 2 -1 0 -1 1 0 -1

说明/提示

样例 1\textbf 1 解释

以节点 33 为例,其子树内有节点 3,1,23,1,2,根据样例输出的 XX,有 ∣X3+X1+X2∣=∣−1+1−1∣=1|X_3+X_1+X_2|=|-1+1-1|=1,满足题目要求。其他节点可以同样地验证,发现满足题目要求。

样例 2\textbf 2 解释

可以证明,无法构造出一个满足题目要求的序列,因此无解,输出了 IMPOSSIBLE。

数据范围

  • 1≤N≤1051\le N\le 10^5。
  • 若在第一棵树内,节点 ii 不是根,则 1≤Ai≤N1\le A_i\le N。
  • 若在第一棵树内,节点 ii 是根,则 Ai=−1A_i=-1。
  • 若在第二棵树内,节点 ii 不是根,则 1≤Bi≤N1\le B_i\le N。
  • 若在第二棵树内,节点 ii 是根,则 Bi=−1B_i=-1。
  • 保证输入的是一棵合法的树。

输入解题思路,AI测评打分。不知道怎么写?

首页