/*
TASK:trade
LANG:C++
*/

#include <iostream>
using namespace std;

int n,m;

int p[1000][1000];
float c[1000];
int sell[1000];

void read()
{
	int x,y;
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		cin>>x>>y;
		p[y][x]=2;//k
		p[x][y]=1;
	}
}

void rec(int place)
{
	int bp=0,bk=0;
	float sum=0;
	for(int i=0;i<n;i++)
	{
		if(p[place][i]!=0)
		{
			if(p[place][i]==2)
			{
				bk++;
				if(c[i]==0) rec(i);
				sum=sum+c[i];
			}
			else bp++;
		}
	}
	if(bp==0)
	{
		sell[place]=1;
		c[place]=sum/(float)bk;
	}
	else
	{
		c[place]=sum/(float)bk+1.0/(float)bp;
	}
}

int main()
{
	float min=1000000;
	read();
	c[0]=1;
	for(int i=1;i<n;i++)
	{
		if(c[i]==0)
		{
			rec(i);
		}
	}
	for(int i=0;i<n;i++)
	{
		if(sell[i]==1&&min>c[i]) min=c[i];
	}
	long long otg=(long long)(min*1000000);
	cout<<otg/1000000<<'.';
	if(otg%1000000==0) cout<<"000000";
	else cout<<otg%1000000;
	cout<<endl;
	return 0;
}