分值 : 25 难度 : 简单题 思路 : 树的分层计数 坑点 : 只有一个头的时候注意一下.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
#include <iostream>#include <vector>using namespace std;vector<int> map[101] ;vector<int> :: iterator itea ;int main(){ int N , M ; cin >> N>>M ; for(int i = 0 ; i< M ; i++) { int self , k ,temp ; cin >> self >> k ; for(int j = 0 ; j < k ;j++) { cin >> temp ; map[self].push_back(temp) ; } } int cur = 0 , count = 0 ; int queen[101] ,deep[101]; int sum[101]; for(int i = 0 ; i< 101 ;i++) { queen[i] = 0 ; sum[i] = 0 ; deep[i] = 0 ; } queen[count ++] = 1 ; deep[1] = 1 ; sum[1] = 1 ; while (cur < count ) { int now = queen[cur] ; for(itea = map[now].begin() ; itea!= map[now].end() ; itea++) { deep[*itea] = deep[now] +1 ; sum[deep[*itea]] ++ ; queen[count++] = *itea ; } cur ++ ; } int max ; for(int i = 1; i< 101 ; i++) { if(sum[i]>sum[max] ) max = i ; } cout << sum[max] << " "<<max <<endl ;}