[Ynoi2079] 2stmo

Luogu
IDLGP9988
Time3000ms
Memory512MB
DifficultyP7
Special JudgeO2优化Ynoi2079
给定一棵 $n$ 个顶点的有根树,顶点编号为 $1,\dots,n$ ,$1$ 为根,$f_2,\dots,f_n$ 依次表示 $2,\dots,n$ 的父亲。 给定 $m$ 对整数 $a_1,b_1,\dots,a_m,b_m$ ,你需要构造一个 $1,\dots,m$ 的排列 $p_1,\dots,p_m$ ,满足这个排列的代价不超过 $4\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)$ 是以 $x$ 为根的子树中的顶点构成的集合,$|A|$ 是集合 $A$ 的元素个数,$A\oplus B$ 是集合 $A,B$ 的对称差(即在 $A,B$ 中恰好出现一次的元素构成的集合)。 ## Input 第一行两个整数 $n,m$ ; 第二行 $n-1$ 个整数 $f_2,\dots,f_n$ ; 接下来 $m$ 行,每行两个整数表示 $a_i,b_i$ ,$i=1,\dots,m$ 。 ## Output 输出 $m$ 行,每行一个整数,依次表示 $p_1,\dots,p_m$ 。 [samples] ## Note Idea:nzhtl1477,Solution:ccz181078,Code:ccz181078,Data:ccz181078 对于 $25\%$ 的数据,满足 $n,m\le 10^4$。 对于 $50\%$ 的数据,$n,m\le 2\times 10^5$。 对于 $75\%$ 的数据,$n,m\le 5\times 10^5$。 对于 $100\%$ 的数据,满足 $1\le n,m\le 10^6$,$1\le f_i\le i-1$,$1\le a_i,b_i\le n$。
Samples
Input #1
5 3
1 1 2 3
1 1
2 5
4 3
Output #1
2
3
1
API Response (JSON)
{
  "problem": {
    "name": "[Ynoi2079] 2stmo",
    "description": {
      "content": "给定一棵 $n$ 个顶点的有根树,顶点编号为 $1,\\dots,n$ ,$1$ 为根,$f_2,\\dots,f_n$ 依次表示 $2,\\dots,n$ 的父亲。 给定 $m$ 对整数 $a_1,b_1,\\dots,a_m,b_m$ ,你需要构造一个 $1,\\dots,m$ 的排列 $p_1,\\dots,p_m$ ,满足这个排列的代价不超过 $4\\times 10^9$。 排列的代价定义为: ",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 3000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P7"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP9988"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "给定一棵 $n$ 个顶点的有根树,顶点编号为 $1,\\dots,n$ ,$1$ 为根,$f_2,\\dots,f_n$ 依次表示 $2,\\dots,n$ 的父亲。\n\n给定 $m$ 对整数 $a_1,b_1,\\dots,a_m,b_m$ ,你需要构造一个 $1,\\dots,m$ 的排列 $p_1,\\dots,p_m$ ,满足这个排列的代价不超过 $4\\times 10^9$。\n\n排列的代价定义为:\n\n...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments