其他分享
首页 > 其他分享> > Codeforces - Minimum Diameter Tree

Codeforces - Minimum Diameter Tree

作者:互联网

题目链接:Codeforces - Minimum Diameter Tree


我们把权值均分给叶子附近的边权即可。为什么正确呢?

假设我们把某一靠近叶子的边权分给其他靠近叶子的,肯定增大。

如果分给非叶子的边,那么其他叶子之间通过这条边肯定也增大。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e5+10;
int n,s,deg[N],cnt;
signed main(){
	cin>>n>>s;
	for(int i=1,a,b;i<n;i++)	scanf("%d %d",&a,&b),deg[a]++,deg[b]++;
	for(int i=1;i<=n;i++)	if(deg[i]==1)	cnt++;
	printf("%.10lf\n",2.0*s/cnt);
	return 0;
}
青烟绕指柔! 发布了604 篇原创文章 · 获赞 242 · 访问量 4万+ 私信 关注

标签:Diameter,int,分给,边权,Tree,Codeforces,long,叶子,Minimum
来源: https://blog.csdn.net/weixin_43826249/article/details/104407692