返回首页 返回题库

树上漫步

C++ 中等 GESP六级真题 #树#深度优先搜索#二分图

题目描述

题面描述

小A有一棵个结点的树,这些结点依次以标号。

小A想在这棵树上漫步。具体来说,小A会从树上的某个结点出发,每一步可以移动到与当前结点相邻的结点,并且小A只会在偶数步(可以是零步)后结束漫步。

现在小A想知道,对于树上的每个结点,从这个结点出发开始漫步,经过偶数步能结束漫步的结点有多少个(可以经过重复的节点)。

输入格式

第一行,一个正整数。

接下来行,每行两个整数,表示树上有一条连接结点和结点的边。

输出格式

一行,个整数,第个整数表示从结点出发开始漫步,能结束漫步的结点数量。

样例1

输入:

3
1 3
2 3

输出:

2 2 1

样例2

输入:

4
1 3
3 2
4 3

输出:

3 3 1 3

数据范围

对于40%的测试点,保证。

对于所有测试点,保证。

时间/内存限制

时间限制:1.0 s

内存限制:512.0 MB

💡 查看提示(先自己想一想再看)
本题核心考察树的二分图性质:树是天然的二分图,可将节点分为奇偶两个集合,偶数步能到达的节点与起点属于同一集合。通过一次DFS遍历统计两个集合的大小,每个节点的答案即为所在集合的大小。注意处理$n \le 2 \times 10^5$的大数据量时要使用高效的输入输出方式,避免超时。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 2 浏览

讨论(0)