东方博宜OJ 2165:子结点的数量(2)← 邻接表 or 链式前向星
【题目来源】
【题目描述】
给定一棵树中的若干父结点和子结点的关系描述(结点 1 是树根),请问该树中,每个结点有多少个子结点。
比如:读入父子关系如下(请注意:本题读入的两个数 x y,不保证 x 是 y 的父)。
因此每个结点的子结点的数量分别是:1 2 0 0。
【输入格式】
第 1 行,读入一个整数 n,表示树中结点的数量,树中的结点编号也是 1~n。(n≤100)
接下来 n-1 行,每行有一对父子关系 x y,不保证 x 是 y 的父。
输入数据保证一定合法,能够形成一棵树,且不存在重复的父子关系的读入。
【输出格式】
输出 n 个数,用空格隔开,表示按照编号从小到大的顺序,输出每个结点子结点的数量。
【输入样例】
4
1 2
2 3
2 4
【输出样例】
1 2 0 0
【数据范围】
n≤100
【算法分析】
● 链式前向星、邻接表
链式前向星:https://blog.csdn.net/hnjzsyjyj/article/details/139369904
邻接表(无向无权图):https://blog.csdn.net/hnjzsyjyj/article/details/101233779
邻接表(有向无权图):https://blog.csdn.net/hnjzsyjyj/article/details/101233485
● 链式前向星在算法竞赛中是最常用的图存储方法,尤其在处理大规模稀疏图时,其空间和时间效率优势显著。邻接表虽简单直观,但在竞赛中已逐渐被链式前向星取代。
● 注意:由于无权图的邻接表代码简单直观,所以在处理无权图时,可以选择邻接表。
● 本题与东方博宜OJ 2164:子结点的数量()的区别在于“每对儿关系 x y 中,不保证 x 是 y 的父”。所以,在输出节点的孩子节点数量时,要区分根节点及非根节点。
【算法代码一:邻接表】
【算法代码二:链式前向星】
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/145989802
https://blog.csdn.net/hnjzsyjyj/article/details/101233485
https://blog.csdn.net/hnjzsyjyj/article/details/101233779
https://blog.csdn.net/hnjzsyjyj/article/details/139369904

浙公网安备 33010602011771号