洛谷U81904 【模板】树的直径
2024-09-08 05:43:35
有负边权,所以用树形DP来找树的直径。
1 //树形DP求树的直径
2 #include<bits/stdc++.h>
3 using namespace std;
4 const int N=500005,M=500005;
5 int n,m,tot,ans;
6 int f1[N],f2[N];//以u为根的子树的最大值和次大值
7 int head[N],to[M*2],w[M*2],nxt[M*2];
8
9 void add(int x,int y,int z){
10 nxt[++tot]=head[x];
11 head[x]=tot;
12 to[tot]=y;
13 w[tot]=z;
14 }
15
16 void dp(int u,int fa){
17 for(int i=head[u];i;i=nxt[i]){
18 int v=to[i];
19 if(v==fa) continue;
20 dp(v,u);
21 if(f1[u]<f1[v]+w[i]){
22 f2[u]=f1[u];
23 f1[u]=f1[v]+w[i];
24 }
25 else if(f2[u]<f1[v]+w[i])
26 f2[u]=f1[v]+w[i];
27 ans=max(ans,f1[u]+f2[u]);
28 }
29 }
30
31 int main(){
32 scanf("%d",&n);
33 int x,y,z;
34 for(int i=1;i<n;i++){
35 scanf("%d%d%d",&x,&y,&z);
36 add(x,y,z);add(y,x,z);
37 }
38 dp(1,0);
39 printf("%d\n",ans);
40 return 0;
41 }
最新文章
- HDF5基本使用方法
- ODAC (odp.net) 从开发到部署
- 《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT
- ios 三种对话框拉伸方法
- Netty的TCP粘包/拆包(源码二)
- JSON 获取属性值的方法
- 配置文件操作模块,configparser
- 用表格形式保存文档 xlwt
- WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider
- NativeScript工作原理
- Web 服务编程,REST 与 SOAP(转)
- 一个很不错的bash脚本编写教程
- [51NOD1405] 树的距离之和(树DP)
- Netty 对通讯协议结构设计的启发和总结
- linq lambda 分组后排序
- [HIHO1143]骨牌覆盖问题&#183;一(矩阵快速幂,递推)
- SSO单点登录在web上的关键点 cookie跨域
- pancake sort的几个问题
- 关于jsp页面是放在webroot目录下和web-inf下优缺点
- 用Regex类计算一个字符串出现次数是最好方法【转载】
热门文章
- Str 真题解(置换)
- CMake库搜索函数居然不搜索LD_LIBRARY_PATH
- Java学习 (八)基础篇 运算符
- vue脚手架创建项目后使用路由报错Object(...) is not a function问题
- mybatis报错:java.io.IOException: Could not find resource /resources/mybatis-config.xml
- (一)esp32开发环境搭建(VSCode+IDF实现单步调试)
- Ceph 块存储 创建的image 映射成块设备
- 使用 Less 混合(Mixins)时报语法错误
- .Net Core使用Coravel实现任务调度
- TCP实现多个客户端发送数据给服务器端