标签:code style 交点 连接 bsp for 定义 strong next
树的直径指树上距离最远的两点间的距离。
DP:
令dp[s]为s子树方向的最大距离,ans为直径。
void DP(int s,int fa)
{
int i,v;
for(i=head[s];i!=-1;i=e[i].next)
{
v=e[i].v;
if(v==fa) continue;
DP(v,s);
ans=max(ans,dp[s]+dp[v]+e[i].w);
dp[s]=max(dp[s],dp[v]+e[i].w);
}
}
DFS|BFS:
任意找一点为根,进行BFS|DFS找到最远点A,以A为根,进行BFS|DFS找到最远点B,AB则为直径。
①DFS(1,-1,0); ②DFS(A,-1,0); pos表示最远点。
void DFS(int s,int fa,int deep)
{
int i,v;
if(mmax<deep) mmax=deep,pos=s;
for(i=head[s];i!=-1;i=e[i].next)
{
v=e[i].v;
if(v==fa) continue;
DFS(v,s,deep+1);
}
}
标签:code style 交点 连接 bsp for 定义 strong next
原文地址:https://www.cnblogs.com/VividBinGo/p/11345187.html