#874. Computer
Computer
题目描述
前段时间,学校购买了第一台电脑(因此这台电脑的ID为1)。近年来,学校又购买了N-1台新电脑。每台新电脑都连接到之前安装好的一台电脑上。 学校管理人员对网络运行缓慢感到担忧,并想知道第i台电脑需要发送信号的最大距离Si(即到最远电脑的电缆长度)。你需要提供这一信息。 提示:示例输入与这张图相对应。从图中可以看出,计算机4是离1号计算机最远的,所以S1=3。计算机4和5是离2号计算机最远的,所以S2=2。 计算机5是离3号计算机最远的,所以S3=3。我们还得到S4=4,S5=4。
输入格式
第一行是一个自然数N(N<=10000),后面是(N-1)行,每行描述一台计算机。 第i行包含三个自然数:第i台计算机连接的计算机编号和用于连接的电缆长度。电缆长度不超过10^9。输入行中的数字用空格分隔。
输出格式
输出N行。第i行是第i台计算机需要发送信号的最大距离Si(1<=i<=N)。
样例
输入样例 1
5
2 1 1
3 2 1
4 3 1
5 1 1
输出样例 1
3
2
3
4
4
输入样例 2
10
10 9 1000000000
9 8 1000000000
8 7 1000000000
7 6 1000000000
6 5 1000000000
5 4 1000000000
4 3 1000000000
3 2 1000000000
2 1 1000000000
输出样例 2
9000000000
8000000000
7000000000
6000000000
5000000000
5000000000
6000000000
7000000000
8000000000
9000000000
输入样例 3
9
1 4 3
1 2 3
1 3 7
2 5 1
2 6 8
3 7 3
3 8 2
7 9 2
输出样例 3
12
15
18
15
16
23
21
20
23
提示
分析:给定一棵节点为 N 的树(1≤N ≤10000),输出每个节点 i 到 离 i 最远的节点的长度。 离每一个节点 i 最远的点就是树的直径的两端的节点 u 和 v 。 于是,我们可以用 两次 DFS 先将树的直径的两个端点u、v求出来,其中第二次 DFS 可以得到 dis(u->i)。 再从v开始进行第三次 DFS,求出每个节点到v的距离dis(v->i)。 对于节点 i ,它的答案就是: max(dis(u->i),dis(v->i))