找树根和孩子

题目描述
给定一棵树,输出树的根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]<<" ";
OK了,此题结束
代码:

#include<bits/stdc++.h>
using namespace std;
int n,k,i,p,a[201],b[201],f[201],s,x,y,h[201];
int main(){
	cin>>n>>k;
	for(i=1;i<=k;i++){
		cin>>x>>y;
		a[i]=x,b[i]=y;
		f[y]=1;
		h[x]++;
		if(s<h[x]) s=h[x],p=x;
	}
	for(int i=1;i<=n;i++) if(f[i]==0) cout<<i<<endl;
	cout<<p<<endl;
	for(int i=1;i<=k;i++)if(a[i]==p) cout<<b[i]<<" ";
}

简单吧?记得三连哦(点赞,关注,转发)!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值