#P1035. 遍历问题

遍历问题

题目描述

给定一棵 nn 个结点的有根树,根结点编号为 11

现将其裁去一些子树,求出最少需要裁去多少结点,使剩下的连通块 DFS 序列与 BFS 序列完全一致。

输出最少需要裁去的结点数量,DFS 与 BFS 序列都要优先遍历输入靠前的节点。

输入格式

nn 行。

第一行包含一个正整数 nn,表示结点数量。

2n2∼n 行,每行包含两个正整数 f,sf,s,表示结点 ff 是结点 ss 的父结点。

输出格式

共两行,第一行包含一个正整数,表示最少需要裁去的结点数,第二行包含若干个正整数,表示剩下连通块的 DFS 序列。

输入输出样例 #1

输入 #1

6
1 2
1 3
2 4
4 5
4 6

输出 #1

1

输入输出样例 #2

输入 #2

5
1 2
2 3
3 4
4 5

输出 #2

0

说明/提示

本题采用子任务捆绑计分。

子任务编号 分值 nn≤ 特殊性质
11 1515 10510^5 A
22 2020 ^ B
33 3030 10310^3
44 3535 10510^5 ^
  • 特殊性质 A:树的形态是一条链。
  • 特殊性质 B:只有根结点可能有多个子结点,其余最多只有 11 个子结点。
  • 对于 100%100\% 的数据,1n1051≤n≤10^5