#include <bits/stdc++.h>
using namespace std;
int N, M;
vector<vector<int> > dir(1000);
void input() {
  cin >> N >> M;
  for (int(i) = 0; (i) < (N); (i)++) {
    int a, b;
    cin >> a >> b;
    --a;
    --b;
    dir[a].push_back(b);
  }
}
void solve() {
  vector<double> dp(1000);
  for (int i = N - 2; i >= 0; i--) {
    double por = 0;
    for (int v : dir[i]) {
      por += dp[v];
    }
    por /= dir[i].size();
    por += 1;
    dp[i] = por;
  }
  double ans = dp[0];
  for (int i = 0; i < N - 1; i++) {
    if (dir[0].size() == 1) continue;
    double por2 = dir[i][0];
    for (int v : dir[i]) {
      if (dp[por2] < dp[v]) por2 = v;
    }
    double por = [&] {
      vector<double> dp1(1000);
      double a = 10000;
      for (int j = N - 2; j >= 0; j--) {
        double por = 0;
        for (int v : dir[j]) {
          if (v == por2 && i == j) continue;
          por += dp[v];
        }
        int num = dir[j].size();
        if (j == por2) num--;
        por /= num;
        por += 1;
        dp[j] = por;
      }
      return dp[0];
    }();
    ans = min(ans, por);
  }
  printf("%.10f\n", ans);
}
int main() {
  input();
  solve();
  return 0;
}
