#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
int n, sum;
double ans;
int last[MAXN];
struct Edge {
  int link, to;
} edge[MAXN << 1];
inline void add(int u, int v) {
  edge[++sum] = (Edge){v, last[u]}, last[u] = sum;
  return;
}
void dfs(int u, int fa, int dep) {
  ans = ans + 1. / dep;
  for (int i = last[u]; i; i = edge[i].to) {
    int v = edge[i].link;
    if (v == fa) continue;
    dfs(v, u, dep + 1);
  }
  return;
}
int main() {
  scanf("%d", &n);
  for (int i = 1, u, v; i < n; ++i) {
    scanf("%d%d", &u, &v);
    add(u, v), add(v, u);
  }
  dfs(1, 0, 1);
  printf("%.10lf\n", ans);
  return 0;
}
