#include <bits/stdc++.h>
using namespace std;
vector<int> E[100005];
double dp[100005];
int n, fa, sz[100005];
void dfs(int now) {
  sz[now] = 1;
  for (int i = 0; i < (int)E[now].size(); i++)
    dfs(E[now][i]), sz[now] += sz[E[now][i]];
}
void redfs(int now) {
  for (int i = 0; i < (int)E[now].size(); i++)
    dp[E[now][i]] = dp[now] + (sz[now] - sz[E[now][i]] - 1) * 0.5 + 1,
    redfs(E[now][i]);
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; i++) {
    scanf("%d", &fa);
    E[fa].push_back(i);
  }
  dp[1] = 1, dfs(1), redfs(1);
  for (int i = 1; i <= n; i++) printf("%.2f ", dp[i]);
  return 0;
}
