#include <bits/stdc++.h>
using namespace std;
const int maxint = -1u >> 1;
template <class T>
bool get_max(T& a, const T& b) {
  return b > a ? a = b, 1 : 0;
}
template <class T>
bool get_min(T& a, const T& b) {
  return b < a ? a = b, 1 : 0;
}
int n;
double ans;
vector<int> p[100010];
void dfs(int u, int fa, int l) {
  int v;
  ans += 1.0 / (double)l;
  for (int i = 0; i < ((int)(p[u]).size()); i++) {
    v = p[u][i];
    if (v != fa) {
      dfs(v, u, l + 1);
    }
  }
}
int main() {
  int u, v;
  ans = 0.0;
  cin >> n;
  for (int i = 0; i <= n; i++) {
    p[i].clear();
  }
  for (int i = 0; i < n - 1; i++) {
    cin >> u >> v;
    p[u].push_back(v);
    p[v].push_back(u);
  }
  dfs(1, -1, 1);
  printf("%.8lf\n", ans);
  return 0;
}
