#include<iostream>
#include<queue>
using namespace std;
int s,t,n,m,last[5005],d[5005],cnt;
struct edge{
int v,w,next;
}e[80005];
void add(int u,int v)
{
e[++cnt].v=v;
e[cnt].next=last[u];
e[cnt].w=1;
last[u]=cnt;
}
struct heapnode{
int u,d;
bool operator<(const heapnode & a)const{
return d>a.d;}
};
bool inq[3005];
int spfa(){
int ans=0;
queue<int>q;
for(int i=1;i<=n;i++)
d[i]=0x3f3f3f;
d[s]=0;inq[s]=1;q.push(s);
while(!q.empty()){
int u=q.front();q.pop();inq[u]=0;
if(d[u]>6) break;
ans++;
for(int i=last[u];i;i=e[i].next)
{
int v=e[i].v;
if(d[v]>d[u]+e[i].w){
d[v]=d[u]+e[i].w;
if(!inq[v]&&d[v]<=6){
inq[v]=1;q.push(v);
}
}
}
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1,u,v;i<=m;i++)
{
cin>>u>>v;
add(u,v);
add(v,u);
}
for(int i=1;i<=n;i++)
{
s=i;
int ans=spfa();
printf("%d: %.2lf%\n",i,(double)ans/n*100);
}
return 0;
}
11-16
1510
07-02
1640
12-09
914