JZOJ 4279. 【NOIP2015模拟10.29B组】树上路径
2024-10-20 08:38:48
题目
现在有一棵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]);
}
最新文章
- PHP之初识PHP(1)
- centos设置静态IP
- [curator] Netflix Curator 使用
- jQuery应用之(一)使用jQuery选择器(荐)
- Android 时间格式的正则表达式
- MAC OSX 下安装 CTAGS
- 数据库MySQL常用命令复习
- MongoDB,HDFS, Spark to 电影推荐
- 通过WebClient/HttpWebRequest实现http的post/get方法
- Entrez检索实例 - NCBI
- Android 一个改进的okHttp封装库
- JavaScript的实现
- 我是实践派之mongo的一主多从
- NPOI导出WPF DataGrid控件显示数据
- java开发环境配置——IDEA SVN的使用
- 本地存储localStorage sessionStorage 以及 session 和cookie的对比和使用
- MySQL5.7.17解压版安装
- asp.net 本地服务字段调用(WebSerice)的小问题
- IDEA控制台问题:java lang OutOfMemoryError:PermGen space
- HttpRunner 接口自动化简单实践
热门文章
- 踩坑记录:Redis的lettuce连接池不生效
- uni-app 动态修改主题色
- A_A01_001 KEIL4-KEIL5软件安装
- 数据结构 传统链表实现与Linux内核链表
- HNCTF的pyjail做题过程详解
- $_GET方法踩坑
- 就聊聊不少小IT公司的技术总监
- 单向绑定vs双向绑定、单向数据流vs双向数据流
- Maven项目中导入坐标依赖时报(Failure to transfer....)的错的问题
- JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式