找树根和孩子

这是一道关于树的算法题目,要求找到树的根节点、孩子最多的节点及其孩子。通过输入结点数和边数,以及边的连接信息,使用C++实现算法找出根节点、最多孩子的节点,并输出其孩子节点。代码实现简洁,利用数组记录和统计节点信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子
输入

第一行:n(结点数<=100),m(边数<=200)。
以下m行;每行两个结点x和y,
表示y是x的孩子(x,y<=1000)。

输出

第一行:树根:root。
第二行:孩子最多的结点max。
第三行:max的孩子。

样例输入
8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8

样例输出
4
2
6 7 8

这一题真的是一道水题。非常非常非常非常非常非常非常非常水的一道水题。
好了,废话不多说。
这一题的思路就是:
首先输入我就不多说了。
接着,用一个for循环,把x和y(题目有写)读入进去。并且做一个记录。用两个数组——一个a数组,一个b数组。分别存储x和y的值。
接着,再定义一个f数组,把f数组的第y项标记为一。
然后,定义一个h数组,统计每一个数字也就是x出现了几次。
最后再弄一个判断:if(s<h[x]) s=h[x],p=x;
接着用一个for循环,判断一下if(f[i]==0) cout<<i<<endl;
搞定以后输出p的值。
最后,用一个for循环判断,if(a[i]==p) cout<<b[i]<<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值