/*
TASK:trade
LANG:C++
*/
#include <iostream>

#define NOT_SET -1
using namespace std;

int a[1005][1005],pr[1005],numOfSl[1005],n,m,i,p,q,sel[1005],selTop=0,ndig=15,dc,sign;
char *st;
double prc[1005],mn=9999999999999999999.0;
double price(int i)
{
    if(prc[i]!=NOT_SET)
        return prc[i];
    double all=0;
    double av;
    for(int j=1;j<=a[i][0];j++)
        all+=price(a[i][j]);
    av=all/a[i][0];
    if(numOfSl[i])
        av+=1.0/numOfSl[i];
    prc[i]=av;
    return av;
}
int main()
{
    cin>>n>>m;
    for(i=0;i<m;i++)
    {
        cin>>p>>q;
        a[q][++a[q][0]]=p;
        numOfSl[p]++;
    }
    prc[0]=1;
    for(i=1;i<=n;i++)
        prc[i]=NOT_SET;
    for(i=0;i<=n;i++)
        if(!numOfSl[i])
            if(mn>price(i))
                mn=price(i);
    st = ecvt(mn, ndig, &dc, &sign);
    for(i=0;i<dc;i++)
        cout<<st[i];
    cout<<".";
    for(i=dc;i<7;i++)
        cout<<st[i];
    cout<<"\n";
//    system("pause");
    return 0;
}
