51Nod 2282 树的深度 cc++题解(非DFS,一眼就懂的菜鸟解法)

51Nod 2282 树的深度 cc++题解(非DFS,一眼就懂的菜鸟解法),第1张

题目描述:
给出一棵n个节点的树,节点编号为1-n(根节点编号为1,且根节点深度为1),求这棵树的深度(树中节点的最大层次)。
例如:
1─2─4─5
└─3
其中1-2-4-5这条边是最长的,所以树的深度为4。
输入
第一行:1个数n(1 < n <= 1000),表示树的节点数量。
后面n-1行:每行2个数x y,表示节点x是节点y的父节点(1 <= x, y <= n)。
输出
输出1个数,表示这棵树的深度
输入样例
5
1 2
1 3
2 4
4 5
输出样例
4
 

本人菜鸟,网络搜索大神的思路基本都是书上的DFS,看不懂,稍微思索一番,认为此题DFS有些大题小作,杀鸡焉用牛刀?

思路:创建数组存储下标元素对应的层数,对数组sort排序,输出最大层数即可。代码如下。

#include
#include

using namespace std;

int n, x, y;
int ceng[1010];

int main(){
    cin >> n;
    for(int i=0; i<=n; i++)    
        ceng[i] = 1;    

    for(int i=1; i
        cin >> x >> y;
        ceng[y] = ceng[x]+1;    
    }
    
    sort(ceng, ceng+n+1);
    cout<     
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/2991616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存