注意
哈希表用来记录层数和该层的节点个数很关键
#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; }