当前位置:网站首页>-找树根-
-找树根-
2022-08-03 11:42:00 【-JMY-】
题目描述
一棵树有n个结点,已知树上所有的父子结点关系,请问该树的根是几号结点,哪个结点的子结点最多,该结点有哪些子结点。
输入
第一行,有1个整数n代表结点数量(0<n≤100)
接下来若干行;每行两个结点x和y,表示y是x的孩子(1≤x,y≤n)
输出
第一行输出树根的编号。
第二行输出孩子最多的结点编号(如果有多个结点的子结点都是最多的,则输出编号最大的那个)。
第三行输出第二行求出的孩子最多的结点,有哪些孩子,按照编号从小到大,输出这些孩子的编号,用空格隔开。
样例输入
5 4 1 4 2 1 3 1 5
样例输出
4 4 1 2
参考代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[1005],b[1005],s[1005],k[1005],l[1005],maxn,ip;
int f(int x){
if(s[x]==0)
return x;
return f(s[x]);
}
int main(){
cin>>n;
for(int i=0;i<n-1;i++){
cin>>a[i]>>b[i];
s[b[i]]=a[i];
k[a[i]]++;
}
cout<<f(b[0])<<'\n';
for(int i=0;i<n-1;i++){
if(k[maxn]<k[a[i]]||(k[maxn]<k[a[i]]&&maxn<a[i]))
maxn=a[i];
}
cout<<maxn<<'\n';
for(int i=0;i<n-1;i++){
if(s[b[i]]==maxn){
l[ip]=b[i];
ip++;
}
}
sort(l,l+ip);
for(int i=0;i<ip;i++)
cout<<l[i]<<' ';
return 0;
}
边栏推荐
猜你喜欢
随机推荐
QGIS绘制演习区域示意图
This article takes you to understand the principle of CDN technology
微信小程序获取用户手机号码
Explain the virtual machine in detail!JD.com produced HotSpot VM source code analysis notes (with complete source code)
[错题]电路维修
[深入浅出]三位数排序
MySQL之json数据操作
FE主导打造一个运营活动平台
【MySQL】数据库进阶之索引内容详解(上篇 索引分类与操作)
浅谈SVN备份
国内数字藏品与国外NFT主要有以下六大方面的区别
微信为什么使用 SQLite 保存聊天记录?
LeetCode——1161. 最大层内元素和
面试突击71:GET 和 POST 有什么区别?
SmobilerService 推送实现
从零开始Blazor Server(6)--基于策略的权限验证
Activiti产生的背景和作用
进程内存
笔试题:金额拆分
ABAB-740新语法