#include <bits/stdc++.h>
using namespace std;
unsigned long long modpow(long long x, long long n, long long m) {
  if (n == 0) return 1UL % m;
  unsigned long long u = modpow(x, n / 2, m);
  u = (u * u) % m;
  if (n % 2 == 1) u = (u * x) % m;
  return u;
}
bool prm[(int)1e3 + 5];
void make_prm() {
  prm[0] = prm[1] = true;
  for (int first = 2; first <= 1000; first++) {
    if (!prm[first]) {
      for (int second = 2 * first; second <= 1000; second += first)
        prm[second] = true;
    }
  }
}
vector<int> fac;
void make_fac(int n) {
  for (int i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      fac.push_back(i);
      fac.push_back(n / i);
      if (i * i == n) fac.pop_back();
    }
  }
}
int n;
vector<int> adj[100005];
vector<double> ans;
void dfs(int, int, int, double, bool);
int main() {
  cin >> n;
  for (long long i = (1); i <= (n - 1); i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1, 0, -1, 1.0, false);
  double cnt = 0;
  for (auto u : ans) cnt += u;
  printf("%.20f", cnt);
  return 0;
}
int child(int n) {
  if (n == 1) return adj[n].size();
  return adj[n].size() - 1;
}
void dfs(int n, int cnt, int parent, double prob, bool is) {
  if (adj[n].size() == 1 && is) {
    ans.push_back(cnt * prob);
    return;
  }
  if (n == 1) is = true;
  prob /= child(n);
  for (auto u : adj[n]) {
    if (u != parent) dfs(u, cnt + 1, n, prob, is);
  }
}
