/*
TASK:trade
LANG:C++
*/
#include <iostream>
#include <stdio.h>
using namespace std;
int n,m,a,b,used1[1001],used[1001],k,j,i,masivec[1001][1001];
float dae[1001][2],sum;

int main(){
        cin>>n>>m;
        for(i=1;i<=m;i++){
                cin>>a>>b;
                dae[a][1]++;
                masivec[b][0]++;
                masivec[b][masivec[b][0]]=a;
                used1[a]=1;
        }
        i=n;
        used[0]=1;
        dae[0][0]=1;
        while(i){
                for(j=1;j<=n;j++){
                   if(!used[j]){
                        sum=0;
                        for(k=1;used[masivec[j][k]]&&k<=masivec[j][0];sum+=dae[masivec[j][k]][0],k++);
                        if(k==masivec[j][0]+1){
                                dae[j][0]=sum/masivec[j][0];
                                if(dae[j][1]) dae[j][0]+=1/dae[j][1];
                            //    cout<<dae[j][0]<<endl;
                                used[j]=1;
                                i--;
                        }
                   }
                }
        }
        sum=1231627;
        for(i=1;i<=n;i++){
                if(!used1[i]&&dae[i][0]<sum) sum=dae[i][0];
        }
        printf("%.6f\n",sum);
        return 0;
}
