信息学奥赛一本通评测系统P1336
恭喜你看到了这篇题解,他会让你避开很多坑(新手推荐,大佬提些建议嘛)
当然,我不想让大佬像下面这道题中大佬一样。[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相关推荐
- 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】
「原题」 1001:Hello,World! 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 0 通过数: 0 [题目描述] 编写一个能够输出"Hello,World!& ...
- 1000:入门测试题目 【信息学奥赛一本通(C++版)在线评测系统】
为了更好的阅读体验,建议您移步至我的博客园来阅读此文章. 传送门 「原题」 1000:入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 0 通过数: 0 [题目描述] ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通(1281:最长上升子序列)
1281:最长上升子序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 15871 通过数: 8180 [题目描述] 一个数的序列bibi,当b1< ...
- 信息学奥赛一本通(1101:不定方程求解)
1101:不定方程求解 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 18175 通过数: 14383 [题目描述] 给定正整数a,b,c.求不定方程 a ...
- 信息学奥赛一本通(1098:质因数分解)
1098:质因数分解 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 33021 通过数: 16969 [题目描述] 已知正整数n是两个不同的质数的乘积,试 ...
- 信息学奥赛一本通(2032:【例4.18】分解质因数)
2032:[例4.18]分解质因数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 582 通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...
- 信息学奥赛一本通C++语言-----1120:同行列对角线的格
[题目描述] 输入三个自然数nn,ii,j(1≤i≤n,1≤j≤n)j(1≤i≤n,1≤j≤n),输出在一个n×nn×n格的棋盘中(行列均从11开始编号),与格子(ii,jj)同行.同列.同一对角线的 ...
最新文章
- 将日志中的指定字段对齐显示输出
- MongoDB 3.0新增特性一览
- java arraylist排序_Java 开发者最容易犯的10个错误【译】
- mysql 单表查询
- PHP-sftp文件上传
- html 静态资源缓存时间,.htaccess设置静态资源缓存(即浏览器缓存)
- test1 3-15 模拟赛1
- 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)
- Tomcat5.5.9+JSP经典配置实例
- Kotlin开发细节
- 服务器上传至云系统,上传至云服务器命令
- 【VMCloud云平台】SCCM(二)部署
- 笔记:Java 性能优化权威指南 第6章 Java 应用性能分析技巧
- 《ASCE1885的源码分析》の简单的进程封装类
- 三维点云学习(2)中-Kd-tree (k-dimensional tree)
- Linux入门自学笔记
- opencv3.4.2调用训练好的Openpose模型
- 1. HikariCP连接池优化配置小结
- Git-删除暂存区文件
- 笔记本电脑键盘被锁如何解锁
热门文章
- java数据流编辑 kylo,kylo问题总结1
- 2021 Mac系统升级后,按大小写键没反应了,切换大小写的灯不亮了
- drozer的安装与模拟器连接
- 高斯过程回归python_GPR(高斯过程回归)详细推导
- 3ds Max2021软件安装包+安装教程
- CAD2020软件安装教程【搬运】
- 极速pdf android,极速PDF阅读器 V3.0.0.2003 官方版[安卓软件]
- C# 之 TcpClient和Socket
- 数仓OLAP(一)--即席查询 Kylin
- windows上编译,使用libtorrent