#P9872. [EC Final 2021] DFS Order
[EC Final 2021] DFS Order
Description
庞教授有一棵以 为根的树,这棵树有 个节点。这 个节点的编号从 到 。
现在他想从根节点开始进行深度优先搜索。他想知道对于每个节点 ,它在深度优先搜索顺序中出现的最小和最大位置。深度优先搜索顺序是指在深度优先搜索过程中访问节点的顺序。一个节点出现在这个顺序中的第 个位置()意味着它是在 个其他节点之后被访问的。由于一个节点的子节点可以以任意顺序进行迭代,因此存在多种可能的深度优先顺序。庞教授想知道对于每个节点 ,使得 出现在第 个位置的最小值和最大值分别是多少。
以下是对根树进行深度优先搜索的伪代码。在其执行之后, 是深度优先搜索顺序。
let dfs_order be an empty list
def dfs(vertex x):
append x to the end of dfs_order.
for (each son y of x): // sons can be iterated in arbitrary order.
dfs(y)
dfs(root)
Input Format
第一行包含一个整数 ,表示测试用例的数量。
对于每个测试用例,第一行包含一个整数 。接下来的 行中的每一行包含两个整数 和 ,表示节点 是节点 的父节点()。这些边形成了一棵以 为根的树。
保证所有测试用例中 的总和不超过 。
Output Format
对于每个测试用例,输出 行。第 行包含两个整数,表示节点 在深度优先搜索顺序中出现的最小和最大位置。
2
4
1 2
2 3
3 4
5
1 2
2 3
2 4
1 5
1 1
2 2
3 3
4 4
1 1
2 3
3 5
3 5
2 5
Hint
题面翻译由 ChatGPT-4o 提供。
京公网安备 11011102002149号