题目链接:点击查看

题目大意:给出 n 个点组成的一棵树,每个点和每条边都有权值,现在需要求出一对点 ( x , y ) ,使得点 x 到点 y 的唯一路径权值和最大,权值和包括点 x 和点 y 的权值以及路径上所有边的权值之和

题目分析:比赛时没注意到这是树的直径,在那里写了一个小时的换根dp也没写出来,导致也没时间去看其实很简单的 G 题,感觉亏死了

树的直径模板题,只不过加了个限制是路径上还需要加上两个端点的权值,只需要稍微修改一下就好了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e6+100;struct Node
{int to,w;Node(int to,int w):to(to),w(w){}
};vector<Node>node[N];int a[N],dp[N],ans;//dp[i]代表以点i为根时,权值和最大的一条链,包含了一个端点的权值void dfs(int u,int fa)
{dp[u]=a[u];for(auto t:node[u]){int v=t.to;int w=t.w;if(v==fa)continue;dfs(v,u);ans=max(ans,dp[u]+dp[v]+w);dp[u]=max(dp[u],dp[v]+w);}
}void init()
{for(int i=0;i<N;i++)node[i].clear();ans=-inf;
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){init();int n;scanf("%d",&n);for(int i=2;i<=n;i++){int to,w;scanf("%d%d",&to,&w);node[to].push_back(Node(i,w));node[i].push_back(Node(to,w));}for(int i=1;i<=n;i++)scanf("%d",a+i);dfs(1,-1);printf("%d\n",ans);}return 0;
}

牛客 - 点对最大值(树的直径)相关推荐

  1. 牛客网 桃花(树的直径)

    桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 桃花一簇开无主,可爱深红映浅红. - ...

  2. 牛客网 NC207429 最大值 KMP

    文章目录 1. 题目描述 1.1. Limit 1.2. Problem Description 1.3. Input 1.4. Output 1.5. Sample Input 1.6. Sampl ...

  3. 树的距离(牛客网树上主席树+dfs序)

    链接:https://ac.nowcoder.com/acm/problem/14415 来源:牛客网 题目描述 wyf非常喜欢树.一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wy ...

  4. 刷题记录:牛客NC53074Forsaken喜欢独一无二的树

    传送门:牛客 题目描述: 众所周知,最小生成树是指使图中所有节点连通且边权和最小时的边权子集. 不过最小生成树太简单了,我们现在来思考一个稍微复杂一点的问题. 现在给定一个n个点,m条边的图,每条边e ...

  5. 牛客 - sequence(笛卡尔树+线段树)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a 和数列 b ,求 题目分析:不算难的题目,对于每个 a[ i ] 求一下贡献然后维护最大值就好,具体思路就是,先找出每个 a[ i ] 左 ...

  6. 牛客 - 血压游戏(虚树+dp)

    题目链接:点击查看 题目大意:中文题,不难理解 题目分析:这个题目比赛的时候没来得及看,比赛结束后看到有大佬写了一篇长链剖分+线段树的题解就被吓到了(主要是感觉太麻烦了,懒得去补了),读完题后总感觉似 ...

  7. 牛客-桃花——一个计算多叉树直径的问题

    文章目录 桃花 题目解析 解题代码 桃花 题目链接 题目解析 这题有点坑,我开始以为是直接找相同的一堆直接一下扫荡,具体来说就是找所有相连在一起的点有多少,然后我很快想到用并查集的方式去写这道题,但一 ...

  8. 牛客 - 骚区间(线段树+思维)

    题目链接:点击查看 题目大意:给出一个 1 ~ n 的排列 a ,现在规定骚区间当且仅当 a[ l ] 是 [ l , r ] 这段区间内的次小值,同时 a[ r ] 是 [ l , r ] 这段区间 ...

  9. 牛客 - 求函数(线段树+区间合并/线段树+矩阵维护)

    题目链接:点击查看 题目大意:现在有 n 个函数,每个函数都是诸如 f( x ) = k * x + b 的形式,只是每个函数的 k 和 b 都是相互独立的,现在给出两个操作: 1 pos k b:将 ...

最新文章

  1. DJango操作MySQL数据库
  2. 【转】winform回车变为tab
  3. 在Ubuntu Linux中获取上次访问的文件时间
  4. js html异步加载的属性,异步加载JS的五种方式
  5. 字符串最后一个单词的长度
  6. centos window系统安装django
  7. 常见的80道面试算法题
  8. 人脸识别活体检测之眨眨眼和张张嘴
  9. 强化学习基本概念及方法分类
  10. 开机黑屏显示html,电脑开机黑屏只显示光标怎么办?来看看几种原因分析及解决方法!...
  11. excel操作模块Openpyxl
  12. Android游戏开发教程汇总
  13. 利用Hessian矩阵的Frangi 滤波器-python版本
  14. Multi-Task Video Captioning with Video and Entailment Generation阅读笔记
  15. 【今日CV 计算机视觉论文速览 第138期】Mon, 1 Jul 2019
  16. Visitor(访问者)设计模式
  17. SwfObjects在页面中嵌入flash(SWF)
  18. 微信小程序播放音频,ios静音状态下无声音、音频播放创建多个等问题
  19. axios中的params和data的区别
  20. cmd批量打开网页和关闭网页的批处理代码

热门文章

  1. 得胜php100怎么样,优缺点评测得胜Q麦评价如何?怎么样呢?老司机透漏
  2. php dns更新,php_mzdns: 站群,大量域名 通过 dns 服务商 api 批量添加 ip 工具。你懂的~ 基于 mzphp2 框架。...
  3. Why choose MySQL?
  4. 初步认识Volatile-缓存一致性协议
  5. Redis中的Cluster总结
  6. break和continue-continue代码演练
  7. 编写Eureka入门案例
  8. 均值极差图控制上下限_年度质量回顾-单值移动极差
  9. C# 类、对象、方法和属性详解(重新排版,页面整洁)
  10. tomcat 访问去掉项目名 直接访问 localhsot