题目描述
分析:
找出一棵树哪一层的结点数最多,DFS或者BFS搜索每层的结点数即可,存到一个数组中,最后选出最大值,树的存储采用二维数组存储。
#include<cstdio>
#include<vector>
using namespace std;
vector<int> node[105];
int hashTable[105]={0};
void DFS(int index,int level){
hashTable[level]++;
for(int i=0;i<node[index].size();i++){
DFS(node[index][i],level+1);
}
}
int main(){
int n,m,k,parent,child;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d",&parent,&k);
while(k--){
scanf("%d",&child);
node[parent].push_back(child);
}
}
DFS(1,1);
int maxn=-1,maxnlevel=0;
for(int i=1;i<105;i++){
if(hashTable[i]>maxn){
maxn=hashTable[i];
maxnlevel=i;
}
}
printf("%d %d\n",maxn,maxnlevel);
return 0;
}