/*
TASK:trade
LANG:C++
*/
#include<iostream>
#include<stdio.h>
using namespace std;
int a[1002][1002],n;
float b[1002];
void ceni(int r)
{
float K=0,X=0,brx=0;
for(int i=0;i<=n;i++)
  {
   if(a[r][i]==1) if(!b[i]) { ceni(i); X=X+b[i]; brx=brx+1; }
                     else { X=X+b[i]; brx=brx+1; }
   if(a[r][i]==-1) K=K+1;
  }
float t=X/brx;
if(K){
float e=1/K;
b[r]= t + e;}
else b[r]=t;
}

int main()
{
int vruzki,i,p,l,j;
scanf("%d%d",&n,&vruzki);
for(i=0;i<vruzki;i++)
  {
   scanf("%d%d",&p,&l);
   a[p][l]=-1;
   a[l][p]=1;
  }
b[0]=1;
for(i=1;i<=n;i++)
  ceni(i);
int dali;
float min=32767;
for(i=0;i<=n;i++)
  {
   dali=0;
   for(j=0;j<=n;j++)
     if(a[i][j]==-1) { dali=1; break; }
   if((dali==0) && (min>b[i])) min=b[i];
  }
printf("%.6f\n",min);
return 0;
}

