#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > v(100001);
double sub[100001], ans[100001];
int dfsub(int x) {
  if (v[x].size() == 0) sub[x] = 0;
  for (int i = 0; i < v[x].size(); i++) sub[x] += dfsub(v[x][i]);
  sub[x]++;
  return sub[x];
}
void dfs2(int x, double ev) {
  ans[x] = ev;
  int sum = 0;
  for (int i = 0; i < v[x].size(); i++) {
    sum += sub[v[x][i]];
  }
  for (int i = 0; i < v[x].size(); i++) {
    dfs2(v[x][i], (sum - sub[v[x][i]]) / 2 + ev + 1);
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 2, x; i <= n; i++) cin >> x, v[x].push_back(i);
  dfsub(1);
  dfs2(1, 1.0);
  for (int i = 1; i <= n; i++) printf("%.6f ", ans[i]);
}
