服了,交代码都交不上
#include <cstdio>
#include <vector>
#define MAXN 100000 + 5
using namespace std;
int n, d[MAXN];
double ans = 0;
vector <int> son[MAXN];
void dfs (int x, int depth) {
d[x] = depth;
for (int i = 0; i < son[x].size(); i++)
if (d[son[x][i]] == 0)
dfs (son[x][i], depth + 1);
}
int main () {
scanf ("%d", &n);
for (int i = 1; i < n; i++) {
int x, y;
scanf ("%d%d", &x, &y);
son[x].push_back (y);
son[y].push_back (x);
}
dfs (1, 1);
for (int i = 1; i <= n; i++)
ans += 1.0 /d[i];
printf("%.20f", ans);
return 0;
}