概述
一、简介
树的中心是指:一个结点,对于每一个点的距离的最大值最小
二、解决
1.Dfs1:标记以结点u为树根的子树链的最大值d1[u],次大值d2[u],以及来源的结点编号c1[u],c2[u]
2.Dfs2:找到链接结点u没有经过u子树的链的最大值fd[u]
如果这个点是前一个节点选中的最大链中的,则这个结点的fd[u]=max(fd[fa[u]],d2[fa[u]])+edge[i].dis;
否则fd[u]=max(fd[fa[u]],d1[fa[u]])+edge[i].dis;
3.最后fd[u]+d1[u]最小的就是答案了
#include<stdio.h> #include<stdlib.h> #define FORa(i,s,e) for(int i=s;i<=e;i++) #define FORs(i,s,e) for(int i=s;i>=e;i--) using names
最后
以上就是大力裙子为你收集整理的树的中心的全部内容,希望文章能够帮你解决树的中心所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复