1. 程式人生 > >Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) D Minimum Diameter Tree

Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) D Minimum Diameter Tree

題目:Minimum Diameter Tree


思路:

可以把s儘量平均的分配給葉子節點所連的邊,直徑就是這個平局值*2。

給出兩組也許有用的資料:


Input:
2 2
1 2

Output:
2

Input:
12 1000
1 2
1 3
1 4
1 5
1 6
1 7
7 8
7 9
9 10
9 11
9 12

Output:
222.22222222222


程式碼:

#include<bits/stdc++.h>
using namespace std;

#define read(x) scanf("%d",&x)
#define maxn 100000 #define db double int n,s; vector<int> a[maxn+5]; int X[maxn+5],Y[maxn+5]; int main() { read(n),read(s); for(int i=1;i<n;i++) { read(X[i]),read(Y[i]); a[X[i]].push_back(Y[i]); a[Y[i]].push_back(X[i]); } int cnt=0; for(int i=1;i<=n;i++) { if(a[i].size()==
1) cnt++; } db ans=(db)s*2/cnt; printf("%.18lf",ans); return 0; }