题目:
思路分析:
手动模拟一下样例 发现其实就是一个欧拉序
下面给出代码
代码实现:
/*
*@Author: GuoJinlong
*@Language: C++
*/
//#include <bits/stdc++.h>
/*
* __----~~~~~~~~~~~------___
* . . ~~//====...... __--~ ~~
* -. \_|// |||\\ ~~~~~~::::... /~
* ___-==_ _-~o~ \/ ||| \\ _/~~-
* __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~
* _-~~ .=~ | \\-_ '-~7 /- / || \ /
* .~ .~ | \\ -_ / /- / || \ /
* / ____ / | \\ ~-_/ /|- _/ .|| \ /
* |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\
* ' ~-| /| |-~\~~ __--~~
* |-~~-_/ | | ~\_ _-~ /\
* / \ \__ \/~ \__
* _--~ _/ | .-~~____--~-/ ~~==.
* ((->/~ '.|||' -_| ~~-/ , . _||
* -_ ~\ ~~---l__i__i__i--~~_/
* _-~-__ ~) \--______________--~~
* //.-~~~-~_--~- |-------~~~~~~~~
* //.-~~~--\
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* 神兽保佑 永无BUG
*/
const int MAX=105;
int vis[MAX];
int ans[MAX];
ll cnt;
vector<int>v[MAX];
void dfs (ll pos,ll fa){
cnt++;
ans[pos]=cnt;
for(int i=0;i<v[pos].size();i++){
int u=v[pos][i];
if(u==fa) continue;
dfs(u,pos);
cnt++;
}
}
void solve(){
cnt=-1;
mms(vis,0);
for(int i=0;i<MAX;i++){
v[i].clear();
}
ll n;
n=read();
for(int i=1;i<=n-1;i++){
int a,b;
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1,0);
ll sum=0;
for(int i=1;i<=n;i++){
sum+=ans[i];
}
printf("%.9f\n",sum*1.0/(n-1)*1.0);
}
int main(){
int t;
cin>>t;
while (t--) {
solve();
}
}