树的高度:
题目:
PS G:\vscodetest> .\ab.exe
5 5
1 2
1 4
1 5
2 3
3
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
int main() {int n,m;scanf("%d %d",&n,&m);vector<vector<int>> tree(n + 1);for (int i = 0; i < n - 1; i++){int u,v;scanf("%d %d",&u,&v);tree[u].push_back(v);tree[v].push_back(u);}queue<int> toVisit; //用来作BFS的队列toVisit.push(m);vector<int> distance(n + 1);//用来判断某个结点是否访问过//若访问过的话还可以记录根节点到该结点的距离for (int i = 0; i < n; i++){distance[i] = -1;}distance[m] = 0; //先设置根节点到根节点的距离是0int maxdist = 0; //用于计数while (toVisit.empty() == false){int current = toVisit.front();toVisit.pop();for (int i = 0; i < tree[current].size(); i++){int child = tree[current][i];if (distance[child] != -1){continue;}toVisit.push(child);distance[child] = distance[current] + 1;maxdist = distance[child];}}printf("%d\n",maxdist);return 0;
}