【题目描述】
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。
【输入】
第一行:n(结点个数≤100),m(边数≤200)。
以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤1000)。
【输出】
第一行:树根:root;
第二行:孩子最多的结点max;
第三行:max的孩子(按编号由小到输出)。
对孩子来说父亲是唯一的,数组表示孩子,然后对应其父亲
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int t[1005],x[1005];
int main()
{
int n,m,y,r,s,sum=1,maxx=0;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x[i]>>y;
t[y]=x[i];//记录孩子的父亲
}
for(int i=1;i<=n;i++)
{
if(t[i]==0) r=i;//根节点
}
sort(x+1,x+m+1);
for(int i=1;i<m;i++)
{
if(x[i]==x[i+1]) sum++;
else sum=1;
if(sum>maxx) {maxx=sum;s=x[i];}
}
cout<<r<<endl<<s<<endl;
for(int i=1;i<=n;i++)
{
if(t[i]==s) cout<<i<<' ';
}
return 0;
}
ps: 找一个数组里的相同字母的最多个数的字母,选择把输入的数据换成数组(一个数组),然后排序,用一个for找出相同的且个数最多的