恭喜你看到了这篇题解,他会让你避开很多坑(新手推荐,大佬提些建议嘛)

当然,我不想让大佬像下面这道题中大佬一样。[AHOI2017/HNOI2017]大佬 - 洛谷https://www.luogu.com.cn/problem/P3724
                                      1336:【例3-1】找树根和孩子

时间限制: 1000 ms         内存限制: 65536 KB
                                              提交数: 12616     通过数: 6521

【题目描述】

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

【输入】

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

以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤1000x,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

如果在考场上遇到了,那场考试一定很水(妙极了)

这道题是树的基础例题,不过有三个bug

(到时候我会讲的)

废话不多说,马上开始!!!

因为这里的一个根有可能有很多节点所以……它来了它来了

结构体数组!!!

代码段如下:

struct node{int data;//数值
}a[101];//节点

把题目中的n,m,root,max,x,y定义好(顺便把输入写了)

int n,m,x,y,root,maxx=-1;
cin>>n>>m;
for(int i=0;i<m;i++)
{cin>>x>>y;a[x].data=y;
}

第一个bug:

这里只能存a[y]的父亲是x(很奇怪)

int n,m,x,y,root,maxx=-1;
cin>>n>>m;
for(int i=0;i<m;i++)
{cin>>x>>y;a[y].data=x;
}

第二个bug:

这里x或y超过n这题就无解!!!

下一步:找爸爸找根节点,根节点没有父亲节点,那么(我们把根节点的data设为x):a[x].data=0

不妨通过第二个bug和a[x].data=0可以推断出如下代码段:

for(int i=0;i<n;i++)
{if(a[i].data==0){root=i;break;}
}
cout<<root<<endl;

是不是很简单?

接下来我们统计max

做一个统计(sum),每次比较取大值

嵌套循环,如果内者父亲的data是外者,那么sum++

(有点不好理解,不理解可以在聊天区写出来,但是作者不是经常来CSDN,不懂可以多思考一会儿,实在不行再提,ok?)

代码段如下:

int sum=0,t;
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)if(a[j].data==i)sum++;if(maxx<sum){maxx=sum;t=i;}//maxx=maxx>sum?maxx:sum应该也行作者没试过(从if(maxx<sum)开始到这了换成maxx=maxx>sum?maxx:sum))sum=0;
}
cout<<t<<endl;

基本上难的地方就是这里了,接下来输出t的孩子们所有子节点

接下来,从小到大,不重不漏,a[i].data=0即可:

代码段如下(f这时这是判断打不打空格的了):

for(int i=0;i<n;i++)
{if(a[i].data==t){if(f)cout<<" ";cout<<i;f++;}
}

完整代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int data;
}a[101];
int main()
{int n,m,x,y,root,maxx=-1;cin>>n>>m;for(int i=0;i<m;i++){cin>>x>>y;a[y].data=x;}for(int i=0;i<n;i++){if(a[i].data==0){root=i;break;}}
cout<<root<<endl;int f=0,t;for(int i=0;i<n;i++){for(int j=0;j<n;j++)   if(a[j].data==i)f++;if(maxx<f){maxx=f;t=i;}f=0;}cout<<t<<endl;f=0;for(int i=0;i<n;i++){if(a[i].data==t){if(f)cout<<" ";cout<<i;f++;}}return 0;
}

如果你是为了抄代码而来的,对不起,上面是错误代码,如果你仔细看了我的题解那可能会想:第三个bug呢?

它来了:

第三个bug:

循环必须从1开始!!!

(为了不让那些抄代码的直接点到,我就不做标题了)

AC代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int data;
}a[101];
int main()
{int n,m,x,y,root,maxx=-1;cin>>n>>m;for(int i=1;i<=m;i++){cin>>x>>y;a[y].data=x;}for(int i=1;i<=n;i++){if(a[i].data==0){root=i;break;}}
cout<<root<<endl;int f=0,t;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)   if(a[j].data==i)f++;if(maxx<f){maxx=f;t=i;}f=0;}cout<<t<<endl;f=0;for(int i=1;i<=n;i++){if(a[i].data==t){if(f)cout<<" ";cout<<i;f++;}}return 0;
}

制作不易,不喜勿喷

关注一下,发现更多精彩内容!!!

信息学奥赛一本通评测系统P1336相关推荐

  1. 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】

    「原题」 1001:Hello,World! 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 0 通过数: 0 [题目描述] 编写一个能够输出"Hello,World!& ...

  2. 1000:入门测试题目 【信息学奥赛一本通(C++版)在线评测系统】

    为了更好的阅读体验,建议您移步至我的博客园来阅读此文章. 传送门 「原题」 1000:入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 0 通过数: 0 [题目描述] ...

  3. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  4. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  5. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  6. 信息学奥赛一本通(1281:最长上升子序列)

    1281:最长上升子序列 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 15871     通过数: 8180 [题目描述] 一个数的序列bibi,当b1< ...

  7. 信息学奥赛一本通(1101:不定方程求解)

    1101:不定方程求解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 18175     通过数: 14383 [题目描述] 给定正整数a,b,c.求不定方程 a ...

  8. 信息学奥赛一本通(1098:质因数分解)

    1098:质因数分解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 33021     通过数: 16969 [题目描述] 已知正整数n是两个不同的质数的乘积,试 ...

  9. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  10. 信息学奥赛一本通C++语言-----1120:同行列对角线的格

    [题目描述] 输入三个自然数nn,ii,j(1≤i≤n,1≤j≤n)j(1≤i≤n,1≤j≤n),输出在一个n×nn×n格的棋盘中(行列均从11开始编号),与格子(ii,jj)同行.同列.同一对角线的 ...

最新文章

  1. 将日志中的指定字段对齐显示输出
  2. MongoDB 3.0新增特性一览
  3. java arraylist排序_Java 开发者最容易犯的10个错误【译】
  4. mysql 单表查询
  5. PHP-sftp文件上传
  6. html 静态资源缓存时间,.htaccess设置静态资源缓存(即浏览器缓存)
  7. test1 3-15 模拟赛1
  8. 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)
  9. Tomcat5.5.9+JSP经典配置实例
  10. Kotlin开发细节
  11. 服务器上传至云系统,上传至云服务器命令
  12. 【VMCloud云平台】SCCM(二)部署
  13. 笔记:Java 性能优化权威指南 第6章 Java 应用性能分析技巧
  14. 《ASCE1885的源码分析》の简单的进程封装类
  15. 三维点云学习(2)中-Kd-tree (k-dimensional tree)
  16. Linux入门自学笔记
  17. opencv3.4.2调用训练好的Openpose模型
  18. 1. HikariCP连接池优化配置小结
  19. Git-删除暂存区文件
  20. 笔记本电脑键盘被锁如何解锁

热门文章

  1. java数据流编辑 kylo,kylo问题总结1
  2. 2021 Mac系统升级后,按大小写键没反应了,切换大小写的灯不亮了
  3. drozer的安装与模拟器连接
  4. 高斯过程回归python_GPR(高斯过程回归)详细推导
  5. 3ds Max2021软件安装包+安装教程
  6. CAD2020软件安装教程【搬运】
  7. 极速pdf android,极速PDF阅读器 V3.0.0.2003 官方版[安卓软件]
  8. C# 之 TcpClient和Socket
  9. 数仓OLAP(一)--即席查询 Kylin
  10. windows上编译,使用libtorrent