PAT练习——1094 The Largest Generation (25 point(s))

题目如下:image

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int book[100];
vector<int> vi[100];
void dfs(int index, int level){
    book[level]++;//第一层肯定是有的,即根节点
    for(int i = 0; i < vi[index].size(); i++){
        dfs(vi[index][i], level + 1);
    }
}
int main(){
    int n, m, a, k, ch;
    cin >> n >> m;
    for(int i = 0; i < m; i++){
        cin >> a >> k;//k指的是每一个非孩子节点的孩子节点的数量
        for(int j = 0; j < k; j++){
            cin >> ch;//ch指的上一个输入的每一位孩子节点
            vi[a].push_back(ch);//输入每一行的孩子之后,将其塞入每个父母的变长数组后面
        }
    }
    dfs(1, 1);
    int maxnum = 0, maxid = 1;
    for(int f = 0; f < 100; f++){
        if(book[f] > maxnum){
            maxnum = book[f];
            maxid = f;
        }
    }
    cout << maxnum << " " << maxid;
    return 0;
}

重要的思路如下:
image

posted @ 2021-06-16 16:20  北海钟士季  阅读(28)  评论(0)    收藏  举报