zoukankan      html  css  js  c++  java
  • MZOJ 1264 Longest

    MZOJ 1264 Longest

    #include<bits/stdc++.h>
    #define maxn 5000
    using namespace std;
     
    int k=0,head[maxn];
    int f[maxn][2];
    int ans=0;
     
    struct node{
        int v,w,nxt;
    }e[maxn<<1];
     
    void adde(int x,int y,int z){
        e[k].v=y;
        e[k].w=z;
        e[k].nxt=head[x];
        head[x]=k++;
    } 
     
    void init(){
        freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
    }
     
    void readdata(){
        memset(head,-1,sizeof(head));
        int n,u,v,w;
        scanf("%d",&n);
        for(int i=1;i<n;i++){
            scanf("%d%d%d",&u,&v,&w);
            adde(u,v,w);
            adde(v,u,w);
        }
    }
     
    void dp(int u,int fa){
        f[u][0]=0;
        f[u][1]=0;
        for(int i=head[u];~i;i=e[i].nxt){
            int v=e[i].v,w=e[i].w;
            if (v==fa) continue;
            dp(v,u);
            int dis=f[v][0]+w;
            if(dis>f[u][0]){
                f[u][1]=f[u][0];
                f[u][0]=dis;
            }
            else if(dis>f[u][1]){
                f[u][1]=dis;
            }
            ans=max(ans,f[u][1]+f[u][0]);
        }
    }
     
    int main(){
        //init();
        readdata();
        dp(1,0);
        printf("%d",ans);
        return 0;
    }

    树形DP的方法

  • 相关阅读:
    Navicat使用技巧(附快捷键)
    Eclipse working set 快捷键
    行为模式--策略模式
    软件的可复用性和维护性
    外观模式
    建造者模式
    开闭原则
    迪米特法则
    工厂作业方法
    依赖倒置原则
  • 原文地址:https://www.cnblogs.com/quietus/p/10300077.html
Copyright © 2011-2022 走看看