树是一种特殊的图结构,有根树是一个有固定根的树。
现在给定一棵有根树,编程求出树中所有节点到指定的根节点最远距离。
输入格式
第一行是两个整数 N,M,表示数的顶点数和根节点的编号。
接下来 N−1 行,每行两个整数 u,,表示编号为 u的节点和编号为 v的节点间有一无向条边。
输出格式
输出距离根节点最远的点到根的距离。
数据范围
1≤N≤10000,
1≤M≤N
1≤u,v≤N
输入样例:
解释
5 5 1 2 1 4 1 5 2 3
输出样例:
3
#include <vector>
#include <iostream>using namespace std;vector<int> v[10010];bool st[10010];int res;void dfs(int d, int x)
{res = max(res, d);for(auto k : v[x]){if(!st[k]) {st[k] = 1;dfs(d + 1, k);}}
}
int main()
{int n, m;cin >> n >> m;for(int i = 0 ; i < n - 1 ; i ++){int x, y;cin >> x >> y;v[x].push_back(y);v[y].push_back(x);}st[m] = 1;dfs(0, m);cout << res;return 0;
}