computer(hdu2196)
Computer
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6378 Accepted Submission(s): 3211
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.
1 #include<iostream>
2 #include<string.h>
3 #include<algorithm>
4 #include<queue>
5 #include<math.h>
6 #include<stdlib.h>
7 #include<stack>
8 #include<stdio.h>
9 #include<ctype.h>
10 #include<map>
11 #include<vector>
12 #include<map>
13 using namespace std;
14 typedef struct acc
15 {
16 int id;
17 int val;
18 } ak;
19 vector<ak>vec[100005];
20 bool vis[100005];
21 typedef struct node
22 {
23 int id;
24 int mcost;
25 int scost;
26 int mid;
27 int sid;
28 node()
29 {
30 mcost = 0;
31 scost = 0;
32 mid = -1;
33 sid = -1;
34 }
35 } ss;
36 ss dp[100005];
37 int father[1000005];
38 void dfs1(int n);
39 void dfs2(int n);
40 int main(void)
41 {
42 int n,m;
43 while(scanf("%d",&n)!=EOF)
44 {
45 memset(father,-1,sizeof(father));
46 int i,j;
47 memset(dp,0,sizeof(dp));
48 for(i = 0; i < 100005; i++)
49 vec[i].clear();
50 for(i = 2; i <= n; i++)
51 {
52 int id,val;
53 scanf("%d %d",&id,&val);
54 ak a;
55 a.val = val;
56 a.id = i;
57 father[i] = id;
58 vec[id].push_back(a);
59 }
60 dfs1(1);
61 dfs2(1);
62 for(i = 1; i <= n; i++)
63 {
64 printf("%d\n",dp[i].mcost);
65 }
66 }
67 return 0;
68 }
69 void dfs1(int n)
70 {
71 for(int i = 0; i < vec[n].size(); i++)
72 {
73 ak d = vec[n][i];
74 {
75 dfs1(d.id);
76 if(dp[d.id].mcost+d.val > dp[n].mcost)
77 {
78 dp[n].scost = dp[n].mcost;
79 dp[n].sid = dp[n].mid;
80 dp[n].mcost = dp[d.id].mcost+d.val;
81 dp[n].mid = d.id;
82 }
83 else if(dp[d.id].mcost+d.val > dp[n].scost)
84 {
85 dp[n].scost = dp[d.id].mcost+d.val;
86 dp[n].sid = d.id;
87 }
88 }
89 }
90 }
91 void dfs2(int n)
92 {
93 for(int i = 0; i < vec[n].size(); i++)
94 {
95 ak d = vec[n][i];
96 if(dp[n].mid!=d.id)
97 {
98 if(dp[n].mcost + d.val > dp[d.id].mcost)
99 {
100 dp[d.id].scost = dp[d.id].mcost;
101 dp[d.id].sid = dp[d.id].mid;
102 dp[d.id].mcost = dp[n].mcost + d.val;
103 dp[d.id].mid = n;
104 }
105 else if(dp[n].mcost + d.val > dp[d.id].scost)
106 {
107 dp[d.id].scost = dp[n].mcost + d.val;
108 dp[d.id].sid = n;
109 }
110 }
111 else
112 {
113 if(dp[n].scost + d.val > dp[d.id].mcost)
114 {
115 dp[d.id].scost = dp[d.id].mcost;
116 dp[d.id].sid = dp[d.id].mid;
117 dp[d.id].mcost = dp[n].scost + d.val;
118 dp[d.id].mid = n;
119 }
120 else if(dp[n].scost + d.val > dp[d.id].scost)
121 {
122 dp[d.id].scost = dp[n].scost + d.val;
123 dp[d.id].sid = n;
124 }
125 }
126 dfs2(d.id);
127 }
128 }
computer(hdu2196)的更多相关文章
- Computer(HDU2196+树形dp+树的直径)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题目: 题意:有n台电脑,每台电脑连接其他电脑,第i行(包括第一行的n)连接u,长度为w,问你每 ...
- [HDU2196]Computer(DP)
传送门 题意 给出一棵树,求离每个节点最远的点的距离 思路 对于我这种菜鸡,真是难啊. 每个点的距离它最远的点,除了在它子树中的,还有在它子树之外的,所以这几个状态都得表示出来. 我们能够很简单的求出 ...
- MySQL数据库的安装与配置(windows)
MySQL是目前最为流行的开放源码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典MySQLAB公司开发,目前属于Oracle公司.任何人都能从Internet下载MySQL软件,而无需支 ...
- 【FSFA 读书笔记】Ch 2 Computer Foundatinons(2)
Hard Disk Technology 1. 机械硬盘内部构造 几个重要概念:Sector(扇区),Head(读写头),Track(磁道),Cylinder(柱面). 如果一个文件比较大,磁盘的写入 ...
- hdu 2196(Computer 树形dp)
A school bought the first computer some time ago(so this computer's id is 1). During the recent year ...
- Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(二)
// Chapter 2介绍的是2d下的投影变换,摘录下了以下定理 Result 2.1. The point x lies on the line l if and only if xTl = 0. ...
- 【FSFA 读书笔记】Ch 2 Computer Foundatinons(1)
Data Organization 1. 进制转换. 按照正常的书写顺序写一个数字(无论多少进制),其中最左边的列称为“最高有效符号”,最右边的列称为“最低有效符号”. (The right-most ...
- 图像分类(三)GoogLenet Inception_v3:Rethinking the Inception Architecture for Computer Vision
Inception V3网络(注意,不是module了,而是network,包含多种Inception modules)主要是在V2基础上进行的改进,特点如下: 将滤波器尺寸(Filter Size) ...
- 【Network architecture】Rethinking the Inception Architecture for Computer Vision(inception-v3)论文解析
目录 0. paper link 1. Overview 2. Four General Design Principles 3. Factorizing Convolutions with Larg ...
随机推荐
- 浏览器点击URL的响应过程
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...
- C#最大值
dtToSList = sqlAccess.ExecuteTable(CommandText); ToSNo = Convert.ToString(dtToSList.Rows[i].ItemArra ...
- 【Android】No Android SDK found(mac)+ 真机调试
[1]No Android SDK found 如果没下载SDK,可以去google官方下载 如果因为上网问题,这里提供两个网址,有人整理好了,这里先谢谢他们,下面两个择其一下载 http://to ...
- d3入门二-常用 方法
CSV 版本6.5.0 这里的data实际上是csv中的一行数据 d3.csv("static/data/dept_cpu.csv",function (data) { conso ...
- spring 事务处理中,同一个类中:A方法(无事务)调B方法(有事务),事务不生效问题
public class MyEntry implements IBaseService{ public String A(String jsonStr) throws Exception{ User ...
- zabbix之源码安装
#:官网地址 https://www.zabbix.com/documentation/4.0/zh/manual/installation/install #:解压并创建用户 root@ubuntu ...
- RHEL 6.5安装系统
转自如下链接: http://www.jb51.net/os/128752.html
- 监控网站是否异常的shell脚本
本节内容:shell脚本监控网站是否异常,如有异常就自动发邮件通知管理员. 脚本检测流程,如下:1,检查网站返回的http_code是否等于200,如不是200视为异常.2,检查网站的访问时间,超过M ...
- React 传值 组件传值 之间的关系
react 组件相互之间的传值: 传值分父级组件传值给子组件 子组件传值给父组件 平级组件.没有嵌套的组件相互传值 1.父组件向子组件传值 父组件通过属性的形式来向子组件传值,子组件通过pr ...
- ES6——>let,箭头函数,this指向小记
let let允许你声明一个作用域被限制在块级中的变量.语句或者表达式. 还是那个经典的问题:创建5个li,点击不同的li能够打印出当前li的序号. 如果在for循环中使用**var**来声明变量i的 ...