注意是从1开始的,for循环的下标要注意
开始没注意从0开始循环,前三个测试点全错
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
using namespace std;
const int MAX = 110;
struct node{
int level;
vector<int> childs;
}node[MAX];
int numperlevel[MAX] = {0};
int n, m;
void levelorder(int root){
queue<int> q;
q.push(root);
node[root].level = 1;
while(!q.empty()){
int p = q.front();
q.pop();
for(int i = 0; i < node[p].childs.size(); i++){
int temp = node[p].childs[i];
node[temp].level = node[p].level + 1;
q.push(temp);
}
}
}
int main(){
cin>>n>>m;
for(int i = 0; i < m; i++){
int num, cnum;
scanf("%d%d",&num,&cnum);
for(int j = 0; j < cnum; j++){
int child;
scanf("%d",&child);
node[num].childs.push_back(child);
}
}
int root = 1;
levelorder(root);
for(int i = 1; i <= n; i++){//注意下标范围
numperlevel[node[i].level]++;
}
int maxchild = 0, maxlevel = 0;
for(int i = 1; i < MAX; i++){
if(maxchild < numperlevel[i]){
maxchild = numperlevel[i];
maxlevel = i;
}
}
cout<<maxchild<<" "<<maxlevel;
return 0;
}