有负边权,所以用树形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 }

最新文章

  1. HDF5基本使用方法
  2. ODAC (odp.net) 从开发到部署
  3. 《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT
  4. ios 三种对话框拉伸方法
  5. Netty的TCP粘包/拆包(源码二)
  6. JSON 获取属性值的方法
  7. 配置文件操作模块,configparser
  8. 用表格形式保存文档 xlwt
  9. WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider
  10. NativeScript工作原理
  11. Web 服务编程,REST 与 SOAP(转)
  12. 一个很不错的bash脚本编写教程
  13. [51NOD1405] 树的距离之和(树DP)
  14. Netty 对通讯协议结构设计的启发和总结
  15. linq lambda 分组后排序
  16. [HIHO1143]骨牌覆盖问题&#183;一(矩阵快速幂,递推)
  17. SSO单点登录在web上的关键点 cookie跨域
  18. pancake sort的几个问题
  19. 关于jsp页面是放在webroot目录下和web-inf下优缺点
  20. 用Regex类计算一个字符串出现次数是最好方法【转载】

热门文章

  1. Str 真题解(置换)
  2. CMake库搜索函数居然不搜索LD_LIBRARY_PATH
  3. Java学习 (八)基础篇 运算符
  4. vue脚手架创建项目后使用路由报错Object(...) is not a function问题
  5. mybatis报错:java.io.IOException: Could not find resource /resources/mybatis-config.xml
  6. (一)esp32开发环境搭建(VSCode+IDF实现单步调试)
  7. Ceph 块存储 创建的image 映射成块设备
  8. 使用 Less 混合(Mixins)时报语法错误
  9. .Net Core使用Coravel实现任务调度
  10. TCP实现多个客户端发送数据给服务器端