题目描述
给定一棵 n 个顶点的有根树,顶点编号为 1,…,n ,1 为根,f2,…,fn 依次表示 2,…,n 的父亲。
给定 m 对整数 a1,b1,…,am,nm ,你需要构造一个 1,…,m 的排列 p1,…,pm ,满足这个排列的代价不超过 4×109。
排列的代价定义为:
$|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) 是以 x 为根的子树中的顶点构成的集合,∣A∣ 是集合 A 的元素个数,A⊕B 是集合 A,B 的对称差(即在 A,B 中恰好出现一次的元素构成的集合)。
输入格式
第一行两个整数 n,m ;
第二行 n−1 个整数 f2,…,fn ;
接下来 m 行,每行两个整数表示 ai,bi ,i=1,…,m 。
输出格式
输出 m 行,每行一个整数,依次表示 p1,…,pm 。
5 3
1 1 2 3
1 1
2 5
4 3
2
3
1
提示
Idea:nzhtl1477,Solution:ccz181078,Code:ccz181078,Data:ccz181078
对于 25% 的数据,满足 n,m≤104。
对于 50% 的数据,n,m≤2×105。
对于 75% 的数据,n,m≤5×105。
对于 100% 的数据,满足 1≤n,m≤106,1≤fi≤i−1,1≤ai,bi≤n。