树的中心
时间限制:1秒 内存限制:256M
【题目描述】
树的中心的定义:树的中心点是离它最远的结点的距离最近。具体地说,若某结点 \(i\) 是树的中心,那么 \(i\) 到树的最远的点的距离是最短的。比如说下面这棵边权为 1 的树中:
1----2----5----6
| |
3 4
◆距离结点 1 最远的点是 6,距离为 3;
◆距离结点 2 最远的点是 6 或 3,距离为 2;
◆距离结点 3 最远的点是6,距离为 4;
◆距离结点 4 最远的点是3或6,距离为 3;
◆距离结点 5 最远的点是3,距离为 3;
◆距离结点 6 最远的点是3,距离为 4;
由上面可以看出,每个结点都有一个距离最远的点的距离,其中距离2是最短的距离是2,所以点 2 就是树的中心。
用数学语言描述树的中心如下:
●设 \(d(a,b)=\)树中两点之间的距离;
●设 \(maxd(i)=MAX{d(i,j) | 1<=j<=N }\)
●那么树的中心结点为:\(MIN{maxd(i) | 1<=i<=N }\)
一棵树有一个中心或两个,若有两个中心,则他们必定是相邻的。比如下面这棵树,其中心有1和2两个。
1----2----5
| |
3 4
现在你的任务是,给出一棵树,请找该树的中心,若有两个,请由小到大输出。
【输入格式】
第一行一个整数 \(N\),表示树的结点个数。
接下来 \(N-1\) 行,每行三个数 \(i,j,k\)。表示 \(i\) 和 \(j\) 有边相连,边的权值为 \(k\)。
【输出格式】
顺序输出这棵树的中心。
【输入输出样例1】
Input
6
1 2 1
2 5 1
5 6 1
2 4 1
1 3 1
Output
2
【输入输出样例2】
Input
5
1 2 1
2 5 1
2 4 1
1 3 1
Output
1 2
【数据限制】
对于 \(100\%\) 的数据,\(1≤M≤100000\),\(1≤k≤100\)
【来源】
Mr.he