题目描述:
给出一棵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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)