求树的直径
Posted wtsruvf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求树的直径相关的知识,希望对你有一定的参考价值。
两遍bfs即可
分析:一开始任取一个点u进行搜索查找出距离点u最远距离的点v和长度
第二次dfs则从第一次中的v找出距离点v最远距离的点的路径长度
void bfs(int u) { queue<int> Q; mem(d, 0); mem(vis, 0); Q.push(u); d[u] = 0; vis[u] = 1; maxway = 0, pos = u; while(!Q.empty()) { u = Q.front(); Q.pop(); for(int i=head[u]; i != -1; i=Edge2[i].next) { int v = Edge2[i].v; if(vis[v]) continue; vis[v] = 1; d[v] = d[u] + 1; if(d[v] > maxway) maxway = d[v], pos = v; Q.push(v); } } } int main() { bfs(1); bfs(pos); return 0; }
以上是关于求树的直径的主要内容,如果未能解决你的问题,请参考以下文章