【题目描述】

给定一棵树,输出树的根root,孩子最多的结点max以及他的child。

【输入】

第一行:n(结点个数≤100≤100),m(边数≤200≤200)。

以下m行:每行两个结点x和y,表示y是x的child(x,y≤1000x,y≤1000)。

【输出】

第一行:树根:root;

第二行:child最多的结点max;

第三行:max的孩子(按编号由小到输出)。

【输入样例】

8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8

【输出样例】

4
2
6 7 8

思路

这题我目前只学了两种方法:父亲表示法和邻接矩阵

----------------------------------------------------------------------

父亲表示法

读入后,将y的父亲置为x,x的孩子数量+1

没父亲的为根节点,根据这个性质求出根节点

接着找出孩子最多的节点

如果父亲为孩子最多的节点,输出

代码:

#include<bits/stdc++.h>
using namespace std;
int father[205],sum[205];
int x,y,n,m;
int main(){cin>>n>>m;for(int i=1;i<=m;i++){cin>>x>>y;father[y]=x;//y的父亲为x sum[x]++;//x的孩子数量+1 }int root=0;for(int i=1;i<=n;i++){if(father[i]==0){root=i;break;//没父亲的节点为根节点 }}int maxn=0,maxjie=0;for(int i=1;i<=n;i++){if(maxn<sum[i]){maxn=sum[i];maxjie=i;//找出孩子最多的节点 }}cout<<root<<endl<<maxjie<<endl;for(int i=1;i<=n;i++){if(father[i]==maxjie){cout<<i<<" ";//父亲为maxjie,输出 }}
}

-----------------------------------------------------------------------------

邻接矩阵

前期和父亲表示法相同,只不过是用矩阵表示

直接上:

#include<bits/stdc++.h>
using namespace std;
int g[205][205],father[205],sum[205];
int x,y,n,m;
int main(){cin>>n>>m;for(int i=1;i<=m;i++){cin>>x>>y;father[y]=x;g[x][y]=1;//不同点,表示y是x的孩子 sum[x]++;}int root=0;for(int i=1;i<=n;i++){if(father[i]==0){root=i;break;}}int maxn=0,maxjie=0;for(int i=1;i<=n;i++){if(maxn<sum[i]){maxn=sum[i];maxjie=i;}//一样 }cout<<root<<endl<<maxjie<<endl;for(int j=1;j<=n;j++){if(g[maxjie][j]==1){cout<<j<<" ";//找到maxjie的孩子,输出 }}
}

1336:【例3-1】找树根和child相关推荐

  1. 信息学奥赛一本通|1336:【例3-1】找树根和孩子

    1336:[例3-1]找树根和孩子 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 15870 通过数: 8325 [题目描述] 给定一棵树,输出树的根root,孩子最多的结点ma ...

  2. 1336:【例3-1】找树根和孩子

    时间限制: 1000 ms 内存限制: 65536 KB 提交数: 2511 通过数: 1325 [题目描述] 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子. [输入] 第一行:n ...

  3. 信息学奥赛一本通 1336 【例3-1】找树根和son(附含解题思路)

    题目描述] 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子. [输入] 第一行:n(结点个数≤100),m(边数≤200). 以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤ ...

  4. 数据结构 找树根和孩子(树)

    树的存储结构: •方法1:数组,称为"父亲表示法". constint m = 10;           //树的结点数 struct node {     int data, ...

  5. 树—— 找树根和孩子

    题目描述 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子 输入 第一行:n(结点数<=100),m(边数<=200).      以下m行:每行两个结点x和y,表示y是x ...

  6. P5718 【深基4.例2】找最小值

    https://www.luogu.com.cn/problem/P5718 """ P5718 [深基4.例2]找最小值 https://www.luogu.com.c ...

  7. 2188 -找树根 ---树

    **2188 -找树根 ---树 **来源:东方博宜oj oj.czos.cn#include<bits/stdc++.h> using namespace std; const int ...

  8. 1336:找树根和孩子

    [题目描述] 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子. [输入] 第一行:n(结点个数≤100),m(边数≤200). 以下m行:每行两个结点x和y,表示y是x的孩子(x,y ...

  9. 找树根和孩子(信息学奥赛一本通-T1336)

    [题目描述] 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子. [输入] 第一行:n(结点个数≤100),m(边数≤200). 以下m行:每行两个结点x和y,表示y是x的孩子(x,y ...

  10. OJ 1180 找树根和孩子

    描述 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子 输入 第一行:n(0<结点数<=100),m(0<边数<=200). 以下m行:每行两个结点x和y,表示 ...

最新文章

  1. 实例规格 ECS (共享计算型)和 (通用型-原独享)性能上有什么区别?...
  2. 【Linux】17_计划任务
  3. android 带清除功能的输入框控件
  4. leetcode 112. Path Sum, 113. Path Sum II | 112,113. 路径总和 I, II(Java)
  5. 汇博工业机器人码垛机怎么写_全自动码垛机器人在企业生产中的地位越来越重要...
  6. python series增加一行_关于python:将一个列表或系列作为一行添加到pandas DataFrame中?...
  7. c++十六进制转十进制_二、八、十、十六进制转换不用计算,Excel 进制转换函数大全奉上...
  8. 关于 Window 的 UWP 应用本地回环限制以及限制解除方案
  9. 04741 计算机网络原理知识点
  10. SpringCloud接入Nacos作为「注册中心」和「配置中心」
  11. cs1.6服务器ip地址文件,cs1.6服务器端封禁的IP在那个文件夹里?
  12. win10计算机出现位置不可用desktop不可用,桌面只有此电脑几个图标,其它桌面图标都没有了
  13. SAP ABAP 检查物料账期函数
  14. 关于NBA所有数据的爬虫(rvest)
  15. 【SE】Week3 : 个人博客作业(必应词典)
  16. 智慧医院IT基础设施建设方案
  17. c++用递归计算二叉树的叶子节点的个数
  18. 利用tushare 研究A股的动量效应
  19. 小学计算机兴趣班简介,小学电脑兴趣班教学计划(7页)-原创力文档
  20. oracle添加创建视图权限不足,Oracle Scott创建视图权限不足解决办法

热门文章

  1. 【深度学习基础-02】概念学习-例子3则
  2. 面试官:说说你最大的优缺点? (25题汇总版)
  3. 9月1日起施行《中华人民共和国数据安全法》发布(附全文
  4. sql 查找重复值,整行重复
  5. android内存脚本教程,安卓内存
  6. SRTP RFC4568
  7. bzoj 4568 [Scoi2016]幸运数字
  8. 爬楼梯 java_爬楼梯问题java实现
  9. 曙光超级计算机用的芯片是国产吗,真正中国芯片龙头是中科曙光
  10. AI能力在智慧养殖应用现状