直接上程序吧,其实没有什么好说的,也不需要新建一个struct
#include<iostream>
#include<vector>
using namespace std;
vector<int> tree[10010];
int n,m,maxlevel[10];
void DFS(int root,int l){
maxlevel[l]++;
for(int i=0;i<tree[root].size();i++){
DFS(tree[root][i],l+1);
}
}
int main(){
for(int i=0;i<10;i++){
maxlevel[i]=0;
}
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
int cmem,cnum;
scanf("%d %d",&cmem,&cnum);
for(int j=0;j<cnum;j++){
int cchil;
scanf("%d",&cchil);
tree[cmem].push_back(cchil);
}
}
//printf("%d",tree[8][1]);
int lnum=-1,gen=0,clnum=-1,cgen=0;
DFS(1,0);
for(cgen=0;cgen<10;cgen++){
if(maxlevel[cgen]>lnum){
lnum=maxlevel[cgen];
gen=cgen;
}
}
printf("%d %d",lnum,gen+1);
return 0;
}