D. Minimum Diameter Tree Round #528 (Div. 2)树

Posted dybala21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D. Minimum Diameter Tree Round #528 (Div. 2)树相关的知识,希望对你有一定的参考价值。

一、题面

题目链接

二、分析

该题注意读题的时候有强调边的权值为非负(即可以为0),此题就是求树两个叶子节点之间的最短距离。为了使两个叶子节点之间的距离最短,那么其实就是让每个最后到叶子的那条路径尽量去平摊更多的权值,因为只有这样才能保证最长的哪个路径值是最小的。相当于除了到叶子的路径,其他路径权值都是0。为什么?因为假设其他路径有权值,那么经过这条路径的两个叶子之间的最大距离肯定不是所有情况中最小的。它除了要加到叶子的路径权重还要加该路径权重。

如果你认为可以给这两个到叶子的路径给尽量小的权重,那么相当于打破了平衡,肯定会有更大的最大权重和路径。

三、AC代码

技术分享图片
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 const int MAXN = 1e5+4;
 5 int Data[MAXN];
 6 
 7 int main()
 8 {
 9     int N, W;
10     while(scanf("%d %d", &N, &W)!=EOF)
11     {
12         int x, y, cnt = 0;
13         double ans;
14         memset(Data, 0, sizeof(Data));
15         for(int i = 1; i < N; i++)
16         {
17             scanf("%d %d", &x, &y);
18             Data[x]++;
19             Data[y]++;
20         }
21         for(int i = 1; i <= N; i++)
22         {
23             if(Data[i] == 1)
24                 cnt++;
25         }
26         ans = W*1.0/cnt*2.0;
27         printf("%.12f
", ans);
28     }
29     return 0;
30 }
View Code

 

以上是关于D. Minimum Diameter Tree Round #528 (Div. 2)树的主要内容,如果未能解决你的问题,请参考以下文章

CF图论思维D. Maximum Diameter Graph

Codeforces 1082 D. Maximum Diameter Graph-树的直径-最长链-构造题 (Educational Codeforces Round 55 (Rated for

543. Diameter of Binary Tree

543. Diameter of Binary Tree

LeetCode 543. Diameter of Binary Tree 解题笔记

LeetCode 543. Diameter of Binary Tree 解题笔记