HDU 2196 Computer( 树上节点的最远距离 )
Computer
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4080 Accepted Submission(s): 2043
Hint: the example input is corresponding to this graph. And from the graph, you can see that the computer 4 is farthest one from 1, so S1 = 3. Computer 4 and 5 are the farthest ones from 2, so S2 = 2. Computer 5 is the farthest one from 3, so S3 = 3. we also get S4 = 4, S5 = 4.
- #include <bits/stdc++.h>
- using namespace std ;
- const int N = ;
- int dp[N][] , son[N][] , ans[N] , n ;
- int eh[N] , et[N<<] , nxt[N<<] , ew[N<<] , tot ;
- void init() {
- memset( eh , - , sizeof eh );
- tot = ;
- }
- void addedge( int u , int v , int w ) {
- et[tot] = v ; ew[tot] = w ; nxt[tot] = eh[u] ; eh[u] = tot++ ;
- et[tot] = u ; ew[tot] = w ; nxt[tot] = eh[v] ; eh[v] = tot++ ;
- }
- int Dp( int u , int fa ) {
- for( int i = eh[u] ; ~i ; i = nxt[i] ) {
- int v = et[i] , w = ew[i] ;
- if( v == fa ) continue ;
- int tmp = Dp( v , u ) + w ;
- if( tmp > dp[u][] ) {
- dp[u][] = tmp ;
- son[u][] = v ;
- }
- if( dp[u][] > dp[u][] ) {
- swap( dp[u][] , dp[u][] ) ;
- swap( son[u][] , son[u][]) ;
- }
- }
- return dp[u][] ;
- }
- void Solve( int u , int fa , int tmp ) {
- ans[u] = max( dp[u][] , tmp ) ;
- for( int i = eh[u] ; ~i ; i = nxt[i] ) {
- int v = et[i] , w = ew[i] ;
- if( v == fa ) continue ;
- if( v == son[u][] ) {
- Solve( v , u , max( dp[u][] , tmp ) + w ) ;
- } else {
- Solve( v , u , max( dp[u][] , tmp ) + w ) ;
- }
- }
- }
- int main () {
- while( ~scanf("%d",&n) ) {
- init();
- for( int i = ; i <= n ; ++i ) {
- int v , w ; scanf("%d%d",&v,&w);
- addedge( i , v , w ) ;
- }
- memset( dp , , sizeof dp ) ;
- Dp( , );
- //for( int i = 1 ; i <= n ; ++i ) cout << i << ' ' << dp[i][0] << ' ' << dp[i][1] << endl ;
- Solve( , , );
- for( int i = ; i <= n ; ++i ) printf("%d\n",ans[i]);
- }
- return ;
- }
HDU 2196 Computer( 树上节点的最远距离 )的更多相关文章
- HDU 2196 Computer (树上最长路)【树形DP】
<题目链接> 题目大意: 输出树上每个点到其它点的最大距离. 解题分析: 下面的做法是将树看成有向图的做法,计算最长路需要考虑几种情况. dp[i][0] : 表示以i为根的子树中的结点与 ...
- HDU 2196 Computer 树形DP经典题
链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...
- HDU 2196 Computer (树dp)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 给你n个点,n-1条边,然后给你每条边的权值.输出每个点能对应其他点的最远距离是多少 ...
- hdu 2196 computer
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 2196 Computer(求树上每一个节点到其他点的最远距离)
解题思路: 求出树的直径的两个端点.则树上每一个节点到其它点的最远距离一定是到这两个端点的距离中最长的那一个. #include <iostream> #include <cstri ...
- HDU 2196 求树上所有点能到达的最远距离
其实我不是想做这道题的...只是今天考试考了一道类似的题...然后我挂了... 但是乱搞一下还是有80分....可惜没想到正解啊! 所以今天的考试题是: 巡访 (path.pas/c/cpp) Cha ...
- HDU 2196 Computer(求树上每个点的最长距离)
题意: 这题想了挺久的, 参考了kuangbin大神的代码:https://www.cnblogs.com/kuangbin/archive/2012/08/28/2659915.html 给出树上边 ...
- HDU 2196.Computer 树形dp 树的直径
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu 2196 Computer 树形dp模板题
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
随机推荐
- final修饰的类,其属性和方法默认是被final修饰的吗?
在论坛上,看到一个问题,当然,各位聪明的客官想必已经知道问题是什么了,嘿嘿,没错就是文章的标题:final修饰的类,其属性和方法默认是被final修饰的吗? 老实说,刚开始看到这个问题的时候,有点懵. ...
- 浏览器HTML5录音功能
一.浏览器HTML5录音功能 二.业务代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- 实验报告三&&第五周总结
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s出现的次数. ② 统计该字符串中子串“is ...
- leetcode-mid-sorting and searching-162. Find Peak Element
mycode 54.81% class Solution(object): def findPeakElement(self, nums): """ :type num ...
- 使用collection查询集合属性
介绍resultMap中使用collection查询集合属性 业务需求,查询部门中的多个人员 public class Department { private Integer id; private ...
- 自动化运维--ansible(1)
前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...
- 三十九、python面向对象一
A.python面向对象 1.面向对象基础:面向对象三个特性:封装,继承,多态C# java 只能用面向对象编程Ruby,python 函数+面向对象 函数式编程:def 函数def f1(a): r ...
- C语言指令数组名和数组名取地址
以下C语言指令:int a[5] = {1, 3, 5, 7, 9}; int *p = (int *)(&a + 1); printf("%d, %d", *(a + 1 ...
- 【mysql】错误代码1308 Invalid use of NULL value
错误原因是: 在最初设计表script_run_detail表时,resut_id忘记勾选不是null选项, 导致存储数据后发现result_id有NULL值,而实际上,我不希望这个字段可以存储NUL ...
- day65—angularJS的学习笔记1
转行学开发,代码100天—2018-05-20 AngularJS的引用示例: <!DOCTYPE html> <html> <head> <title> ...