zoukankan      html  css  js  c++  java
  • XidianOJ 1090 爬树的V8

    题目描述

    V8超级喜欢锻炼身体,尤其喜欢爬树,为了抓到更多的虫子,他希望自己从某个叶子节点到根节点的路径最长,现在给你一棵树,输出V8需要的路径长度。

    输入

    多组数据
    第一行一个T表示数据组数
    对于之后的每组数据
    第一行一个n,表示边数。
    后面n行,每一行三个数u,v,w,表示有v是u的儿子,并且之间有一条权为w的边。
    1为根节点。

    所有数据小于10000.

    输出

    从根节点到某个叶子的最长路径。

    --正文
    难点在咋储存这个树。。
    试过c的结构体,被free搞的心烦意乱
    只好用vector水一下
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cstdlib>
    #include <vector>
    using namespace std;
    typedef long long LL;
    
    struct EdgeNode {
        int next;
        int weight;
    };
    typedef struct EdgeNode Edge;
    vector<Edge> Tree[10001];
    
    int dfs(int node){
        int i,sum = 0;
        for (i=0;i<Tree[node].size();i++){
            sum = max(sum,dfs(Tree[node][i].next)+Tree[node][i].weight);
        }
        return sum;
    }
    
    int main(){
        int time,T,i,j;
        scanf("%d",&T);
        for (time=1;time<=T;time++){
            int n;
            scanf("%d",&n);
            for (i=1;i<=n;i++) Tree[i].clear();
            for (i=1;i<=n;i++){
                int u,v,w;
                scanf("%d %d %d",&u,&v,&w);
                Edge l;
                l.next = v; l.weight = w;
                Tree[u].push_back(l);
            }
            int root;
            printf("%d
    ",dfs(1));
        }
        return 0;
        
    }
  • 相关阅读:
    11
    961. N-Repeated Element in Size 2N Array
    用numpy.pad()对图像进行填充及简单的图像处理
    709. To Lower Case
    929. Unique Email Addresses
    771. Jewels and Stones
    谭凯---访谈录
    如何拍照
    主题阅读法
    社会各职业工作重心和流程
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6115846.html
Copyright © 2011-2022 走看看