JZOJ 4279. 【NOIP2015模拟10.29B组】树上路径
题目
现在有一棵n个点的无向树,每个点的编号在1-n之间,求出每个点所在的最长路。
思路
换根 \(dp\),这里只是记下怎么打
\(Code\)
#include<cstdio>
#include<iostream>
using namespace std;
const int N = 1e5;
int n , h[N + 5] , tot , f1[N + 5] , f2[N + 5] , g1[N + 5] , g2[N + 5];
struct edge{
int nxt , to , w;
}e[2 * N + 5];
inline void add(int u , int v , int w)
{
e[++tot].to = v;
e[tot].w = w;
e[tot].nxt = h[u];
h[u] = tot;
}
inline void dfs1(int u , int fa)
{
for(register int i = h[u]; i; i = e[i].nxt)
{
int v = e[i].to;
if (v == fa) continue;
dfs1(v , u);
if (f1[v] + e[i].w > f1[u]) f2[u] = f1[u] , f1[u] = f1[v] + e[i].w;
else if (f1[v] + e[i].w > f2[u]) f2[u] = f1[v] + e[i].w;
}
}
inline void dfs2(int u , int fa)
{
for(register int i = h[u]; i; i = e[i].nxt)
{
int v = e[i].to;
if (v == fa) continue;
if (f1[v] + e[i].w == g1[u])
{
if (g2[u] + e[i].w > f1[v]) g1[v] = g2[u] + e[i].w , g2[v] = f1[v];
else g2[v] = g2[u] + e[i].w , g1[v] = f1[v];
}
else {
if (g1[u] + e[i].w > f1[v]) g1[v] = g1[u] + e[i].w , g2[v] = f1[v];
else g2[v] = g1[u] + e[i].w , g1[v] = f1[v];
}
g1[v] = max(g1[v] , f1[v]) , g2[v] = max(g2[v] , f2[v]);
dfs2(v , u);
}
}
int main()
{
freopen("tree.in" , "r" , stdin);
freopen("tree.out" , "w" , stdout);
scanf("%d" , &n);
int u , v , w;
for(register int i = 1; i < n; i++)
{
scanf("%d%d%d" , &u , &v , &w);
add(u , v , w) , add(v , u , w);
}
dfs1(1 , 0);
g1[1] = f1[1] , g2[1] = f2[1];
dfs2(1 , 0);
for(register int i = 1; i <= n; i++) printf("%d\n" , g1[i] + g2[i]);
}
JZOJ 4279. 【NOIP2015模拟10.29B组】树上路径的更多相关文章
- JZOJ 4272. 【NOIP2015模拟10.28B组】序章-弗兰德的秘密
272. [NOIP2015模拟10.28B组]序章-弗兰德的秘密 (File IO): input:frand.in output:frand.out Time Limits: 1000 ms M ...
- JZOJ 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语
4273. [NOIP2015模拟10.28B组]圣章-精灵使的魔法语 (File IO): input:elf.in output:elf.out Time Limits: 1000 ms Mem ...
- [JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)
Description 背景介绍弗兰德,我不知道这个地方对我意味着什么.这里是一切开始的地方.3年前,还是个什么都没见过的少年,来到弗兰德的树下,走进了封闭的密室,扭动的封尘已久机关,在石板上知道了这 ...
- [JZOJ4274] [NOIP2015模拟10.28B组] 终章-剑之魂 解题报告(二进制)
Description [背景介绍]古堡,暗鸦,斜阳,和深渊……等了三年,我独自一人,终于来到了这里……“终焉的试炼吗?就在这里吗?”我自言自语道.“终焉的试炼啊!就在这里啊!”我再一次自言自语道.“ ...
- JZOJ 4269. 【NOIP2015模拟10.27】挑竹签
4269. [NOIP2015模拟10.27]挑竹签 (File IO): input:mikado.in output:mikado.out Time Limits: 1000 ms Memory ...
- 【JZOJ4715】【NOIP2016提高A组模拟8.19】树上路径
题目描述 给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E.(k为路径p上的边的权值和) 输入 第一行给出N,S,E.N代表树的点数,S,E如题目描述. 下面N- ...
- 某模拟赛C题 树上路径统计 (点分治)
题意 给定一棵有n个节点的无根树,树上的每个点有一个非负整数点权.定义一条路径的价值为路径上的点权和-路径上的点权最大值. 给定参数P,我!=们想知道,有多少不同的树上简单路径,满足它的价值恰好是P的 ...
- [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)
Description “我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力.”——<The Grimoire of Marisa>雾雨魔理 ...
- [jzoj]4271. 【NOIP2015模拟10.27】魔法阵(37种转移的dp)
题意不说 应该这辈子都不会忘记了... 这是我人生中做的最SB的一道DP题. 真的打的我心态崩了.... 可是竟然被我调出来了..... 也是没谁了... 我们设\(F[i][j][S]\)表示到第\ ...
- [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)
题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...
随机推荐
- [.NET学习] EFCore学习之旅 -3 一些其他的迁移命令
1.Update-DataBase xxx 概述:将数据库回滚到某个版本. 1.首先创建一个表 Dog 2.生成迁移 Add-Migration CreateDogTable 并更新到数据库 Upd ...
- 【Flink】概念、入门、部署(yarn和standalone模式)、架构(组件和运行流程)、批处理、流处理API、window、时间语义、Wartermark、ProcessFunction、状态编程、Table API和SQL、CEP、面试题
一.Flink简介 1.概述 Apache Flink是为分布式.高性能.随时可用以及准确的流处理应用程序打造的开源流处理框架 对无界和有界数据流进行有状态计算 2.重要特点 (1)事件驱动型:从一个 ...
- SVNAdmin2 - 基于web的SVN管理系统
1. 介绍 SVNAdmin2 是一款通过图形界面管理服务端SVN的web程序. 正常情况下配置SVN仓库的人员权限需要登录到服务器手动修改 authz 和 passwd 两个文件,当仓库结构和人员权 ...
- 痞子衡嵌入式:对比恩智浦全系列MCU(包含Kinetis/LPC/i.MXRT/MCX)的GPIO电平中断设计差异
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦全系列MCU(包含Kinetis, LPC, i.MXRT, MCX)的GPIO电平中断设计差异. 在痞子衡旧文 <以i.M ...
- 教你用JavaScript实现乘法游戏
案例介绍 欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个乘法积分游戏.乘法游戏主要通过用户输入的数值和程序计算的数值进行对比,正确积一分,错 ...
- CH432,CH438,CH9434串口扩展芯片常见问题
目前WCH有三款串口扩展芯片CH432,CH438以及CH9434. 型号 CH432 CH438 CH9434 扩展串口数量 2 8 4 通讯接口 并口/SPI(具体需要看芯片封装) 并口 SPI ...
- 在linux中安装mysql5.7
安装前准备: 确保你的CentOS6.10使用的镜像url是可被访问的!!(可参考文章:https://blog.csdn.net/qq_39946015/article/details/111086 ...
- (三)elasticsearch 源码之启动流程分析
1.前面我们在<(一)elasticsearch 编译和启动>和 <(二)elasticsearch 源码目录 >简单了解下es(elasticsearch,下同),现在我们来 ...
- MarkDown语法----纯文本格式的标记语言
一.基本语法 1.标题 一级标题: "# + 空格 + 标题内容" 二级标题: "## + 空格 + 标题内容" .... 2.字体 粗体: "**+ ...
- [C++]模版特例化和模版偏特化
函数模版特例化 例子: //第一个版本;可以比较任意两个类型 template<typename T> int compare(const &T,const T&); // ...