#P9988. [Ynoi2079] 2stmo

    ID: 10171 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>Special JudgeO2优化Ynoi2079

[Ynoi2079] 2stmo

题目描述

给定一棵 nn 个顶点的有根树,顶点编号为 1,…,n1,\dots,n ,11 为根,f2,…,fnf_2,\dots,f_n 依次表示 2,…,n2,\dots,n 的父亲。

给定 mm 对整数 a1,b1,…,am,bma_1,b_1,\dots,a_m,b_m ,你需要构造一个 1,…,m1,\dots,m 的排列 p1,…,pmp_1,\dots,p_m ,满足这个排列的代价不超过 4×1094\times 10^9。

排列的代价定义为:

$|S(a_{p_1})|+|S(b_{p_1})|+\sum\limits_{i=2}^m |S(a_{p_{i-1}})\oplus S(a_{p_i})|+|S(b_{p_{i-1}})\oplus S(b_{p_i})|$

其中 S(x)S(x) 是以 xx 为根的子树中的顶点构成的集合,∣A∣|A| 是集合 AA 的元素个数,A⊕BA\oplus B 是集合 A,BA,B 的对称差(即在 A,BA,B 中恰好出现一次的元素构成的集合)。

输入格式

第一行两个整数 n,mn,m ;

第二行 n−1n-1 个整数 f2,…,fnf_2,\dots,f_n ;

接下来 mm 行,每行两个整数表示 ai,bia_i,b_i ,i=1,…,mi=1,\dots,m 。

输出格式

输出 mm 行,每行一个整数,依次表示 p1,…,pmp_1,\dots,p_m 。

5 3
1 1 2 3
1 1
2 5
4 3
2
3
1

提示

Idea:nzhtl1477,Solution:ccz181078,Code:ccz181078,Data:ccz181078

对于 25%25\% 的数据,满足 n,m≤104n,m\le 10^4。

对于 50%50\% 的数据,n,m≤2×105n,m\le 2\times 10^5。

对于 75%75\% 的数据,n,m≤5×105n,m\le 5\times 10^5。

对于 100%100\% 的数据,满足 1≤n,m≤1061\le n,m\le 10^6,1≤fi≤i−11\le f_i\le i-1,1≤ai,bi≤n1\le a_i,b_i\le n。