https://www.nowcoder.com/acm/contest/156/F
对于每一个点的贡献为 1/它的深度。 至于为啥是这样的,对于每一种全局的情况,每个点的概率都不是相同的,都会随着别的点的取或不取而改变,那么我们再单独看一个点的时候,就应该只看这条路径上的深度。
至于为什么是这样,我都是瞎说的。。。
#include<bits/stdc++.h>
using namespace std;
long long dp[100010];
vector<int>p[100010];
void dfs(int x,int pre)
{
dp[x]=dp[pre]+1;
for(int i=0;i<p[x].size();i++)
{
if(p[x][i]!=pre)
{
dfs(p[x][i],x);
}
}
}
long long qpow(long long x,long long n,long long mod)
{
long long ans=1;
while(n)
{
if(n&1)ans=ans*x%mod;
x=x*x%mod;
n>>=1;
}
return ans;
}
int main()
{
int n;
while(cin>>n)
{
memset(dp,0,sizeof(dp));
int a,b;
for(int i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
p[a].push_back(b);
p[b].push_back(a);
}
dfs(1,0);
long long ans=0;
long long mod=998244353;
for(int i=1;i<=n;i++)
{
ans=(ans+qpow(dp[i],mod-2,mod))%mod;
}
cout<<ans<<endl;
}
return 0;
}