zoukankan      html  css  js  c++  java
  • 【C++竞赛 D】树的深度

    时间限制:1s 内存限制:32MB
    问题描述
    数据结构中定义,树的高度为一棵树中所有节点的层次的最大值。现在yyy有一棵树请你帮他求出该树的高度。
    输入描述
    第一行一个整数T(1≤T≤20)表示数据组数。
    对于每组数据第一行一个整数n(1≤n≤40000),表示树中节点数。其中结点1为根节点。接下来n行,第一个数〖num〗_i (1≤i≤n), 表示第i个结点的儿子数,接下来〖num〗_i个数,分别是第i个结点的儿子。
    输出描述
    对于每组数据,输出一行,一个整数表示该树的深度。
    输入样例
    1
    5
    2 4 2
    1 5
    0
    1 3
    0
    输出样例
    3
    样例解释
    样例如下图:树的高度为3。

    这里写图片描述

    【题目链接】:

    【题解】

    水题;
    dfs一遍就能求出深度;

    【完整代码】

    #include <bits/stdc++.h>
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    using namespace std;
    #define pb push_back;
    
    const int MAXN = 4e4+100;
    int T,n,m,ans;
    vector <int> a[MAXN];
    
    void dfs(int x,int dep)
    {
        ans = max(dep,ans);
        int len = a[x].size();
        rep1(i,0,len-1)
            {
                int y = a[x][i];
                dfs(y,dep+1);
            }
    }
    
    int main()
    {
        //freopen("D:\rush.txt","r",stdin);
        scanf("%d",&T);
        while (T--)
        {
            ans = 0;
            rep1(i,1,40000) a[i].clear();
            scanf("%d",&n);
            rep1(i,1,n)
            {
                int num,x;
                scanf("%d",&num);
                rep1(j,1,num)
                {
                    scanf("%d",&x);
                    a[i].push_back(x);
                }
            }
            dfs(1,1);
            printf("%d
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    C#
    C#
    SQLServer
    C#
    使用Spring Boot快速构建应用
    mysql (master/slave)复制原理及配置
    Mysql 半同步复制配置
    Mysql+keeplived+lvs
    Mysql实时双备
    mysqlbinlog 用法
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626873.html
Copyright © 2011-2022 走看看