zoukankan      html  css  js  c++  java
  • A1094. The Largest Generation

    A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the largest population.

    Input Specification:

    Each input file contains one test case. Each case starts with two positive integers N (&lt100) which is the total number of family members in the tree (and hence assume that all the members are numbered from 01 to N), and M (&ltN) which is the number of family members who have children. Then M lines follow, each contains the information of a family member in the following format:

    ID K ID[1] ID[2] ... ID[K]

    where ID is a two-digit number representing a family member, K (&gt0) is the number of his/her children, followed by a sequence of two-digit ID's of his/her children. For the sake of simplicity, let us fix the root ID to be 01. All the numbers in a line are separated by a space.

    Output Specification:

    For each test case, print in one line the largest population number and the level of the corresponding generation. It is assumed that such a generation is unique, and the root level is defined to be 1.

    Sample Input:

    23 13
    21 1 23
    01 4 03 02 04 05
    03 3 06 07 08
    06 2 12 13
    13 1 21
    08 2 15 16
    02 2 09 10
    11 2 19 20
    17 1 22
    05 1 11
    07 1 14
    09 1 17
    10 1 18

    Sample Output:

    9 4

    #include<iostream>
    #include<cstdio>
    #include<vector>
    using namespace std;
    typedef struct{
        int data;
        vector<int>child;
    }node;
    node tree[20000];
    int N, M, width[20000] = {0}, maxDepth = -1;
    void DFS(int s, int dp){
        if(s > N)
            return;
        width[dp]++;
        if(dp > maxDepth){
            maxDepth = dp;
        }
        for(int i = 0; i < tree[s].child.size(); i++){
            DFS(tree[s].child[i], dp + 1);
        }
    }
    int main(){
        scanf("%d%d", &N, &M);
        for(int i = 0; i < M; i++){
            int id, K, temp;
            scanf("%d%d", &id, &K);
            tree[id].data = id;
            for(int j = 0; j < K; j++){
                scanf("%d", &temp);
                tree[id].child.push_back(temp);
            }
        }
        DFS(1,1);
        int index = -1, max = -1;
        for(int i = 1; i <= maxDepth; i++){
            if(width[i] > max){
                max = width[i];
                index = i;
            }
        }
        printf("%d %d", max, index);
        cin >> N;
        return 0;
    }
    View Code
     
  • 相关阅读:
    多任务异步操作在爬虫中的应用
    selenium怎样避免被服务器检测
    python查看文件夹下所有文件
    使用selenium实现站长素材图片采集
    云打码接口
    django的请求生命周期
    django中间件
    Python之Hello World的条件输出实例
    项目要部署到远程的服务器:
    饭侠main.js
  • 原文地址:https://www.cnblogs.com/zhuqiwei-blog/p/9485351.html
Copyright © 2011-2022 走看看