我是靠谱客的博主 大力裙子,最近开发中收集的这篇文章主要介绍树的中心,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、简介

  树的中心是指:一个结点,对于每一个点的距离的最大值最小

二、解决

  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

最后

以上就是大力裙子为你收集整理的树的中心的全部内容,希望文章能够帮你解决树的中心所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部