返回目录
题意
给出一个树的节点数n,非叶节点数m,然后给出m个非叶节点各自的孩子节点编号,求节点个数最多的一层(其中根节点层数为1),输出该层节点数和层数
样例(可复制)
9 1.80 1.00
1 5 4 4 -1 4 5 3 6
//output
1.85 2
注意点
- 本题采用DFS遍历,树使用静态树写法
#include<bits/stdc++.h>
using namespace std;
int n,m,id,num,tmp;
int a[110]={0};//记录某层的个数
vector<int> node[110];
void DFS(int root,int depth) {
a[depth]++;
for(int i=0;i<node[root].size();i++){
DFS(node[root][i],depth+1);
}
}
int main(){
cin>>n>>m;
while(m--){
scanf("%d %d",&id,&num);
while(num--){
scanf("%d",&tmp);
node[id].push_back(tmp);
}
}
DFS(1,1);//根节点编号,根节点层数
int maxnum=0,maxdepth=1;
for(int i=1;i<=n;i++){
if(a[i]>maxnum){
maxnum=a[i];
maxdepth=i;
}
}
cout<<maxnum<<" "<<maxdepth;
return 0;
}