链接:http://codeforces.com/contest/1006/problem/E
给一棵n个节点的树和q次询问,每次询问两个数u、k,表示第u个节点的第k个前序遍历的结果是谁。
这么水的题竟然放在了E,可能这就是div 3吧…
dfs一遍,维护出每个节点i的前序遍历的次序reti,以及该节点的子树中共计多少个节点szi,可以利用reti维护出第j号遍历的节点是idi。当我们要求的某节点开始往后数k个数不存在时,输出-1;否则我们的答案就是ret[id[u]+k−1]。
1 |
|
Keep going
链接:http://codeforces.com/contest/1006/problem/E
给一棵n个节点的树和q次询问,每次询问两个数u、k,表示第u个节点的第k个前序遍历的结果是谁。
这么水的题竟然放在了E,可能这就是div 3吧…
dfs一遍,维护出每个节点i的前序遍历的次序reti,以及该节点的子树中共计多少个节点szi,可以利用reti维护出第j号遍历的节点是idi。当我们要求的某节点开始往后数k个数不存在时,输出-1;否则我们的答案就是ret[id[u]+k−1]。
1 | #include <bits/stdc++.h> |
v1.5.2