#include <bits/stdc++.h>
using namespace std;
vector<int> g[100010];
int sz[100010];
double p[100010];
int cur;
void dfs(int u) {
  sz[u] = 1;
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    dfs(v);
    sz[u] += sz[v];
  }
}
void dfs1(int u) {
  double tot = 0;
  int d = g[u].size();
  for (int i = 0; i < d; i++) tot += sz[g[u][i]];
  for (int i = 0; i < d; i++) {
    int v = g[u][i];
    p[v] = (tot - sz[v]) * 1.0 / 2 + p[u] + 1;
    dfs1(v);
  }
}
int main() {
  int n, x;
  cin >> n;
  for (int i = 2; i <= n; i++) {
    scanf("%d", &x);
    g[x].push_back(i);
  }
  dfs(1);
  p[1] = 1;
  dfs1(1);
  for (int i = 1; i <= n; i++) printf("%.10f ", p[i]);
  return 0;
}
