HDOJ 2196

思路:先选定1为树根,进行第一次深搜,很容易求出节点u到其子节点的最长距离和次长距离,求次长距离的目的是如果u的跟节点最长路径经过u则dp的时候就不能取其跟节点的最长距离,应该取其次长距离;然后进行第二次深搜,搜索节点u经过其跟节点的最长距离。如果令dp[u][0],dp[u][1],分别为节点u到子节点的最长,次长距离,dp[u][2]表示节点u经过其跟节点v的最长距离,则状态方程为 dp[u][2] = max(dp[v][2],dp[u][0] + edge[j].w == dp[v][0] ? dp[v][1] : dp[v][0]) + edge[j].w;最后输出答案为max(dp[u][0],dp[u][2]),即某点u的最长距离为其到子节点的最长距离和经过其跟节点的最长距离二者之中的最大者。


#include<iostream>
#include<cstdio>
#include<cstring>
#define MAX 11111
using namespace std;
typedef long long int LL;
typedef struct{int to, next, w;
}Node;
Node edge[MAX];
LL head[MAX], dp[MAX][3];
void AddEdge(int u, int v, int w, int i){edge[i].to = v;edge[i].w = w;edge[i].next = head[u];head[u] = i;
}
void dfs_to_son(int i){LL bigest = 0, biger = 0;for(int j = head[i];j != -1;j = edge[j].next){int v = edge[j].to;dfs_to_son(v);LL temp = dp[v][0] + edge[j].w;if(bigest <= temp){biger = bigest;bigest = temp;}else if(temp > biger) biger = temp;}dp[i][0] = bigest;dp[i][1] = biger;
}
void dfs_to_father(int i){for(int j = head[i];j != -1;j = edge[j].next){int v = edge[j].to;dp[v][2] = max(dp[i][2], dp[v][0] + edge[j].w == dp[i][0] ? dp[i][1]:dp[i][0]) + edge[j].w;dfs_to_father(v);}
}
int main(){int n, u, w;/* freopen("in.c", "r", stdin); */while(~scanf("%d", &n)){memset(dp, 0, sizeof(dp));memset(head, -1, sizeof(head));for(int i = 2;i <= n;i ++){scanf("%d%d", &u, &w);AddEdge(u, i, w, i-1);}dfs_to_son(1);dfs_to_father(1);for(int i = 1;i <= n;i ++) printf("%lld\n", max(dp[i][2], dp[i][0]));}return 0;
}


转载于:https://www.cnblogs.com/wangzhili/p/3950278.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为啥饮料瓶大都是圆的,牛奶盒却是方的?

全世界只有3.14 % 的人关注了青少年数学之旅一提起喝饮料和牛奶你们是不是就来精神了但是喝了这么久的饮料你有没有想过一个问题为什么饮料瓶一般都是圆的&#xff1f;而牛奶盒却是方的&#xff1f;有的人可能会说饮料瓶要拿在手上当然是圆的舒服啊拿着一个方形的饮料瓶时间长了…

Docker最全教程之使用Docker搭建Java开发环境

前言 Java是一门面向对象的优秀编程语言&#xff0c;市场占有率极高&#xff0c;但是在容器化实践过程中&#xff0c;发现官方支持并不友好&#xff0c;同时与其他编程语言的基础镜像相比&#xff08;具体见各语言镜像比较&#xff09;&#xff0c;确实是非常臃肿。 Java [J…

删除sql下注册服务器

HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80\Tools\SQLEW\Registered Servers X\SQL Server 组 删除你那个注册名 转载于:https://www.cnblogs.com/DonePuzzle/archive/2008/04/01/1163731.html

OrganicsDelivery总结

一、UserControl调用所在页面的其他内容&#xff08;代理实现&#xff09; UserControl代码 Codeusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;…

面试官:Redis 内存数据满了,会宕机吗?

背景Redis 数据库内存数据满了&#xff0c;会宕机吗&#xff1f;答案是&#xff1a;不会让它出现存满的情况&#xff0c;在使用Redis的时候我们要配置Redis能使用的最大的内存大小&#xff0c;存到一定容量的时候还有Redis的内存淘汰策略呢&#xff0c;还有LRU算法进行淘汰&…

Android简单封装类似JQuery异步请求

在android开发中经常会使用异步请求数据&#xff0c;通常会使用handler或者AsyncTask去做&#xff0c;handler 配合message 使用起来比较麻烦&#xff0c;AsyncTask 线程池只允许128个线程工作&#xff0c;会有溢出的问题&#xff0c;&#xff08;当然一般情况不会有那么多线程…

你爱我吗? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源你这样真的很机车诶&#xff0c;侵权删&#xff09;

Java开发和嵌入式开发该如何选择

首先&#xff0c;Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位&#xff0c;也都有大量的从业人员&#xff0c;所以从就业的角度来看&#xff0c;学习Java开发和嵌入式开发都是不错的选择。Java语言的应用领域包括Web开发、Android开发和大数据开发等领域&#xff0…

合理支配“财富”:经理人运用时间的12种典型模式

1. 他们大部分时间用于与人交往。总经理们个人单独工们的时间仅占整个工作时间的24% 。这部分时间通常是他们在家里、飞机上或外出乘车时间。总经理中仅有两人&#xff08;弗兰克和波林&#xff09;与别人交往的时间不超过其工作时间总量的70 &#xff05;。绝大多数总经理都将…

小米和腾讯的.NET笔面试题哪个更难?可自测附答案

统计了下&#xff0c;当下正在招.NET的大厂有腾讯、京东、唯品会、阿里、百度、华为、小米、网易、特斯拉等。进大厂、拿高薪、享福利&#xff0c;应该是.NET程序员普世梦想了。金九银十将至&#xff0c;还不赶紧刷题准备&#xff1f;即使等金三银四&#xff0c;下面这些笔面试…

hdu 1879 继续畅通工程 (最小生成树)

继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12717 Accepted Submission(s): 5506 Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通&#xff08;但不一…

熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程

全世界只有3.14 % 的人关注了青少年数学之旅你睡着的时候&#xff0c;真的被洗了脑。这次&#xff0c;波士顿大学的科学家们&#xff0c;史无前例地拍下了清洗过程&#xff1a;红色是血液&#xff0c;蓝色是脑脊液。厉害的是从前没有发现过&#xff0c;血液会周期性地大量流出大…

【解决bug之路】JAVA 之 static

在Java语言中&#xff0c;static表示“静态”的意思&#xff0c;使用场景可以用来修饰成员变量和成员方法&#xff0c;当然也可以是静态代码块。static的主要作用在于创建独立于具体对象的域变量或者方法。本文主要来去讲解一下static的来龙去脉。 static要解决什么问题&#…

将Linux加入Windows域

Samba3.0以上的版本提供了加入WindowsPDC域的命令net join&#xff0c;现在用它把Samba Server加入WindowsPDC&#xff0c;例如snoopy.echo是WindowsPDC域&#xff1a;net rpc join -S snoopy.echo -U Administrator&#xff0c;然后输入域管理员密码&#xff0c;也就是windows…

程序员的人生

今天在网上看到这么一张图片&#xff0c;让人吃惊不小&#xff0c;我也是一名典型的学生出身的程序员在这个行业做了也接近三年了&#xff0c;也曾经犹豫过&#xff0c;曾经迷茫过&#xff0c;曾经思考过自己以后的人生&#xff0c;也是几乎和下面这张图片的经历一致&#xff0…

WPF中一个通用的BoolToXXX转换类

在WPF程序的数据绑定里面&#xff0c;经常会通过一个布尔类型的值来控制UI控件的状态&#xff0c;例如是否可见&#xff0c;是否最大化之类的。然而UI控件的各个状态属性的类型往往不是布尔类型&#xff0c;比如UIElement.Visibility的类型是Visibility枚举&#xff0c;Window.…

Cisco常用命令

Switch(config)#snmp-server community c2960 ro #设置snmp只读服务 Switch(config)#snmp-server enable traps #打开snmp陷阱 Switch(config)#snmp-server host 192.168.1.1 traps c2960 #指定接收traps信息的主机和共同体名 Switch(config)#logging on #启动logging机制 Sw…

到家自动充电,拜拜充电线!东京大学开发自动充电房间,能量成为“与空气一样的东西”...

全世界只有3.14 % 的人关注了青少年数学之旅每天下班回家第一件事&#xff0c;是不是给手机充电&#xff1f;但是充电线在哪&#xff0c;你找得到吗&#xff1f;如果现在告诉你&#xff0c;一回到家&#xff0c;手机就能自动充电&#xff0c;简直就是整理苦手的救星&#xff01…

JS图片放大查看效果!

http://bbs.blueidea.com/thread-2812683-1-1.htmlhttp://bbs.blueidea.com/thread-2814846-1-1.html应用效果<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>Javascript Images zoom-out view sample.…

从零开始学习jQuery (九) jQuery工具函数 【转】

一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件. 二.前言 大…