链接:https://ac.nowcoder.com/acm/contest/558/G
来源:牛客网

小猫在研究树。
小猫在研究路径。
给定一棵N个点的树,每条边有边权,请你求出最长的一条路径,满足经过每个点最多一次,经过的边的条数为偶数,且边权和最大。
请输出这个最大的边权和。

输入描述:

第一行一个正整数N,表示节点个数。

接下来N−1行,第i行三个正整数

ui,vi,wi,表示第i条边连接点ui,vi,边权为wi。

输出描述:

一行一个正整数,表示最大的边权和。

输入

5
1 2 5
1 3 5
2 4 5
2 5 1

输出

10

备注:

1≤N≤10

5

,1≤w

i

≤10

9

,保证输入数据形成一棵树。

题意:一棵树上每条边有一个边权,然后叫你找出一个偶数条边的路径,要求权值最大
思路:首先这个很容易看出是树形dp,不用偶数条的时候我们就可以保留到每个点的最大值然后找出每个点的最大和次大之和即可
偶数我们怎么处理呢,我们这时候就要考虑到当前这个点奇数条和偶数条的情况,所以我们dp数组分开记录奇偶数情况
#include<bits/stdc++.h>
#define mod 5000000007
#define maxn 100005
using namespace std;
typedef long long ll;
struct sss
{
ll x,z;
sss(){};
sss(int a,int b){x=a;z=b;};
};
vector<struct sss> mp[maxn];
int n;
long long mx;
ll dp[maxn][];
void dfs(int x,int fa)
{
dp[x][]=;
dp[x][]=-mod;
for(int i=;i<mp[x].size();i++){
int y=mp[x][i].x;
int z=mp[x][i].z;
if(y==fa) continue;
dfs(y,x);
mx=max(mx,max(dp[x][]+z+dp[y][],dp[x][]+z+dp[y][]));//先取第一条,所以我们的dp[x][1]初值为-mod,后面再比较最大值
dp[x][]=max(dp[x][],dp[y][]+z);
dp[x][]=max(dp[x][],dp[y][]+z);
}
return;
}
int main(){
ll x,y,z;
cin>>n;
for(int i=;i<n-;i++){
cin>>x>>y>>z;
mp[x].push_back(sss(y,z));
mp[y].push_back(sss(x,z));
}
dfs(,);
cout<<mx;
}
												

桂林电子科技大学第三届ACM程序设计竞赛 G 路径的更多相关文章

  1. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp

    链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...

  2. 重复 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/B import java.util.HashSet; import java.util.Scanner; p ...

  3. 相聚 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/D 就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到 ...

  4. 分离 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 区间 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)

    链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...

  7. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 C.二元-K个二元组最小值和最大-优先队列+贪心(思维)

    链接:https://ac.nowcoder.com/acm/contest/558/C来源:牛客网 小猫在研究二元组. 小猫在研究最大值. 给定N个二元组(a1,b1),(a2,b2),…,(aN, ...

  8. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 A.串串-后缀自动机模板题

    链接:https://ac.nowcoder.com/acm/contest/558/A来源:牛客网 A.串串 小猫在研究字符串. 小猫在研究字串. 给定一个长度为N的字符串S,问所有它的子串Sl…r ...

  9. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...

随机推荐

  1. 爬坑之路---Google map

    google.maps.event.adddDomListen(window, 'load', callback);当文档流中所有的dom加载完成后,执行回调函数,可以不用在script中使用defe ...

  2. MinTTY终端模拟器要点

    1.MinTTY是一个Cygwin和MSYS的虚拟终端: 2.支持复制和粘贴操作,支持鼠标操作和右键快捷菜单: 3.支持文本.文件.文件夹的拖放: 4.支持中文,支持UTF-8字符集,支持IME(In ...

  3. Python入门(一)数据类型、循环语句

    脚本语言类型: 1.编译型语言:写完代码不能执行,需要先编译     eg:c.c++.c# 2.解释性语言:不需要编译 直接执行                      eg:python.jav ...

  4. Lab 10-1

    This lab includes both a driver and an executable. You can run the executable from anywhere, but in ...

  5. win10释放的wifi热点手机连不上

    直入正题吧…… 在win10的搜索框里输入ser,找到“windows服务”选项,点击进入,如下图 找到下图所示的两个服务,然后,右键,属性,启动类型改为自动,然后点确定,确定完以后,再右键,点启动, ...

  6. CentOS 7中关闭删除virbr0虚拟网卡

    [问题] 虚拟机IP:192.168.31.101 本地物理机IP:192.168.31.254 虚拟机安装在本地物理机上 发现问题:本地物理机ping得通虚拟机IP,但是虚拟机无法ping通物理机I ...

  7. python - 初识面向对象

    1.初识面向对象       面向过程:一切以事务的发展流程为中心           优点:负责的问题流程化,编写相对简单         缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...

  8. 略解TCP乱序和丢包

    在使用基于TCP实现的各种组件的时候,我们经常会处理数据包.这数据包说来奇怪,从来不会丢失,也不会乱序,只会产生粘包.底层的机制是如何实现的呢?进来我们就来用简洁易懂的文字描述清楚. 在TCP数据包设 ...

  9. nginx非root安装

    nginx非root安装 唯一需要解决的就是指定安装目录 这里使用nginx相关包如下 nginx-1.14.0.tar.gz 安装需要依赖如下2个包 pcre-8.42.tar.gz zlib-1. ...

  10. echarts x和y去掉

    解决方法 "axisLine": { "show": false },