一开始想ST表的,然后烂了,就暴力找LCA了
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
#include<map>
#include<unordered_map>
#include<set>
#include<unordered_set>
#include<cstring>
using namespace std;
#define int long long
#define pii pair<int,int>
#define IOFast() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int mod=1e9+7;
const int maxn=2e2+100;
vector<int> G[maxn];
int F[maxn][maxn];
int parent[maxn][maxn];
int vis[maxn],dep[maxn];
int n,ans;
int qpow(int a,int m)
{
int res=1;
int multi=a;
while(m!=0)
{
if((m&1)==1)
{
res=(res*multi)%mod;
}
multi=(multi*multi)%mod;
m/=2;
//m>>=1;
}
return res;
}
int inv(int a,int q)
{
return qpow(a,q-2)%mod;
}
void init(){
cin>>n;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
G[v].push_back(u);
G[u].push_back(v);
}
for(int i=1;i<=210;i++)
{
F[i][0]=1;
F[0][i]=0;
}
int inv2=inv(2,mod);
for(int i=1;i<=210;i++)
{
for(int j=1;j<=210;j++)
{
F[i][j]=(F[i-1][j]+F[i][j-1])%mod;
(F[i][j]*=inv2)%=mod;
}
}
}
void dfs(int v,int p,int d){
parent[v][0]=p;
dep[v]=d;
int len=G[v].size();
for(int i=0;i<len;i++){
if(G[v][i]==p) continue;
dfs(G[v][i],v,d+1);
}
}
inline int getlca(int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
int deep=dep[y];
for(int i=floor(log(n));i>=0;i--){
if(dep[parent[x][i]]>=deep)x=parent[x][i];
}
for(int i=floor(log(n));i>=0;i--){
if(parent[x][i]!=parent[y][i]){x=parent[x][i];y=parent[y][i];}
}
if(x!=y)x=parent[x][0];
return x;
}
void pre()
{
for(int j=1;j<=floor(log(n));j++)
for(int i=1;i<=n;i++)
parent[i][j]=parent[parent[i][j-1]][j-1];
}
void solve(){
for(int i=1;i<=n;i++)
{
memset(vis, 0, sizeof vis);
memset(dep, 0, sizeof dep);
memset(parent,0,sizeof parent);
dfs(i,-1,1);
pre();
for(int y=1;y<=n;y++)
for(int x=y+1;x<=n;x++)
{
int ca = y, cb = x;
int na = 0, nb = 0;
while (dep[ca] > dep[cb])
ca = parent[ca][0], ++na;
while (dep[cb] > dep[ca])
cb = parent[cb][0] ,++nb;
while (ca != cb)
ca = parent[ca][0], cb = parent[cb][0], ++na, ++nb;
ans = (ans + F[na][nb]) % mod;
}
}
cout<<(ans*inv(n,mod))%mod;
}
signed main(){
IOFast();
init();
solve();
}