#include <bits/stdc++.h>
using namespace std;
class Node {
 public:
  int loc;
  long double ans;
  vector<Node *> nbh;
  Node(int pos) {
    loc = pos;
    ans = -1;
  }
};
vector<Node *> Graph;
vector<int> v;
long double soln(Node *curr) {
  int sz = 0;
  long double temp = 0, fact;
  v[curr->loc] = 1;
  if (curr->ans != -1) return curr->ans;
  for (int i = 0; i < curr->nbh.size(); ++i) {
    if (v[curr->nbh[i]->loc] == 0) sz = sz + 1;
  }
  if (sz == 0) {
    curr->ans = 0;
    return 0;
  } else {
    fact = (long double)(1) / (double)(sz);
    for (int i = 0; i < curr->nbh.size(); ++i) {
      if (v[curr->nbh[i]->loc] == 0) {
        temp = temp + fact * (soln(curr->nbh[i]) + 1);
      }
    }
    curr->ans = temp;
  }
  return curr->ans;
}
int main(int argc, char const *argv[]) {
  Graph.clear();
  int n;
  cin >> n;
  Graph.resize(n + 1);
  v.resize(n + 1);
  for (int i = 1; i <= n; ++i) {
    Graph[i] = new Node(i);
  }
  for (int i = 0; i < n - 1; ++i) {
    int src, des;
    cin >> src >> des;
    Graph[src]->nbh.push_back(Graph[des]);
    Graph[des]->nbh.push_back(Graph[src]);
  }
  long double answer = soln(Graph[1]);
  printf("%.15Lf\n", answer);
  return 0;
}
