HDU - 2196(树形dp)

给出一颗树,求树中的每个顶点到其他所有顶点距离的最大值。

经典树形dp

#include 

using namespace std;
const int maxn=1e4+100;
int n,dp[maxn],dpf[maxn],f[maxn][3];//dp为孩子节点到这个点的最远距离,dpf为父节点到这个节点的最远距离,最后取max
struct node{
    int x,val;
    node(int _x,int _val)
    {
        x=_x;
        val=_val;
    }
};
vectora[maxn];
void dfs(int u,int fa)
{
    for(int i=0;itmp2)////找到兄弟节点到这个点的最远和次远距离并记录哪个兄弟(因为最远距离可能是从自己这个方向过来的)
        {
            tmp2=dp[v]+a[u][i].val;
            y=v;
            if(tmp1

 

 

 

你可能感兴趣的:(dp,树形dp)