A1094 The Largest Generation (25 分)
#include<iostream>
using namespace std;
#include<cstdio>
#include<vector>
const int MAXN=110;
vector<int> node[MAXN];
int hashTable[MAXN]={0}; //记录每层的结点个数
void DFS(int index,int level) {
hashTable[level]++; //第level层的结点个数加1
for(int k=0;k<node[index].size();k++) {
DFS(node[index][k],level+1);
}
}
int main() {
int allNum,familyNum,childNum,father,child;
scanf("%d%d",&allNum,&familyNum);
for(int i=0;i<familyNum;i++) {
scanf("%d%d",&father,&childNum);
for(int j=0;j<childNum;j++) {
scanf("%d",&child);
node[father].push_back(child); //建树
}
}
DFS(1,1);
int maxLevel=-1,maxValue=0;
for(int i=1;i<MAXN;i++) {
if(hashTable[i]>maxValue) {
maxValue=hashTable[i];
maxLevel=i;
}
}
printf("%d %d\n",maxValue,maxLevel);
return 0;
}