寻找孩子最多的结点
描述
给定一棵树,输出孩子最多的结点以及它的孩子
输入
共m + 1行。 第一行包含两个整数n(0 < n <= 100)和m(0 < m <= 200),表示树有n个节点和m条父子关系。
以下m行,每行两个整数表示结点x和y,y是x的孩子(x, y<=1000)。 其中所有结点的编号不一定是连续的
输出
共两行。 第一行包含一个整数,表示孩子最多的结点的编号(如果满足要求的结点有多个,则输出编号最大的那个)。 第二行包含多个整数,表示孩子最多的节点的孩子的编号,按照编号从小到大输出,以空格分隔。
样例输入
5 4
4 1
4 2
1 3
1 5
样例输出
4
1 2
一点点难度的题目(^-^)V
#include <iostream>
using namespace std;
int a[1005][1005]={0};
int main(){
int n,m,row,col,most,cnt=-1,tmp,maxr=-1,maxc=-1;
cin>>n>>m;
for (int i = 0; i < m; i++){
cin>>row>>col;
a[row][col]=1;
if(row>maxr)maxr=row;
if(col>maxc)maxc=col;
}
for (int i = 1; i <= maxr; i++){
tmp=0;
for (int j = 1; j <= maxc; j++)
tmp=tmp+a[i][j];
if(tmp>=cnt){
cnt=tmp;
most=i;
}
}
cout<<most<<endl;
for (int j = 1; j <= maxc; j++)
if(a[most][j]==1)
cout<<j<<" ";
return 0;
}