#include <bits/stdc++.h>
using namespace std;
int n, sz[100050];
double d[100050];
vector<int> v[100050];
int GetSz(int x) {
  sz[x] = 1;
  for (int i = 0; i < v[x].size(); i++) sz[x] += GetSz(v[x][i]);
  return sz[x];
}
void dfs(int x) {
  for (int i = 0; i < v[x].size(); i++) {
    d[v[x][i]] += d[x] + 1 + (sz[x] - 1 - sz[v[x][i]]) / 2.0;
    dfs(v[x][i]);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 2, x; i <= n; i++) {
    scanf("%d", &x);
    v[x].push_back(i);
  }
  d[1] = 1;
  GetSz(1);
  dfs(1);
  for (int i = 1; i <= n; i++) printf("%.12g ", d[i]);
}
