#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
vector<int> tree[maxn];
int n;
bool flag[maxn];
double dfs(int deep, int at) {
  flag[at] = false;
  double ret = 0;
  for (int i = 0; i < tree[at].size(); i++) {
    int one = tree[at][i];
    if (flag[one]) ret += dfs(deep + 1, one);
  }
  return ret + 1.0 / (deep);
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) flag[i] = true;
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    tree[a].push_back(b);
    tree[b].push_back(a);
  }
  printf("%.9lf", dfs(1, 0));
  return 0;
}
