题目链接

注意

哈希表用来记录层数和该层的节点个数很关键

#include<bits/stdc++.h>
using namespace std;
int m,n;
vector<int> G[105]; 
int hashT[105];
void dfs(int i, int level){
    hashT[level]++;
    for(int j=0;j<G[i].size();j++){
        int v = G[i][j];
        dfs(v,level+1);
    }
}
int main(){
    int u,v,k;
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>u>>k;
        while(k--){
            cin>>v;
            G[u].push_back(v);
        }
    } 
    dfs(1,1);
    int ans=0,t;
    for(int i=1;i<=n;i++){
        if(hashT[i] > ans){
            ans = hashT[i];
            t = i;
        }
    }
    cout<<ans<<" "<<t<<endl;
    return 0;
}