/*
TASK:trade
LANG:C++
*/
#include <iostream>
using namespace std;
int o[1001][1001],n,m,con[1001];
double c[1001],s;
int main ()
{ 
int i,j,a,b,br=0,k=0;
double min,temp;
scanf("%d%d",&n,&m);
c[0]=1;  
for(i=0;i<m;i++)
                {
                 scanf("%d%d",&a,&b);
                 o[a][b]=1;
                 o[b][a]=2;
                 con[a]=1;
                 }
for(i=0;i<=n;i++)
                  if(o[i][0]==2)
                                {
                                 br=0;
                                 for(j=1;j<=n;j++)
                                                  if(o[i][j]==1)br++;
                                                  else if (o[i][j]==2)break;
                                 if(j==n+1)c[i]=1+1/(double)br;
                                 }
for(i=1;i<=n;i++)
                 {
                  br=0;
                  s=0.0;
                  k=0;
                  if(c[i]!=0)continue;
                  for(j=0;j<=n;j++)
                                   {
                                   if(o[i][j]==2&&c[j]==0)break;
                                   if(o[i][j]==2){s+=c[j];br++;}
                                   if(o[i][j]==1)k++;
                                   }
                  if(k==0&&j==n+1)c[i]=(double)s/(double)br;
                  else if(j==n+1){c[i]=(double)s/(double)br+1/(double)k;i=1;}
                   }
for(i=0;i<=n;i++)
                 if(con[i]==0){min=c[i];break;}
for(i=0;i<=n;i++)
                 if(con[i]==0&&c[i]<min)min=c[i];
printf("%lf",min);
}
