PTA 数据结构与算法题目集(中文)5-7 六度空间 (30分)

#include
#include
/*
bfs 起始结点的层数为0,以后的结点层数为上一结点层数+1 输出时%% 
*/
using namespace std;
queuequ;
int m[10001][10001],n,mm[10001],sum,vis[10001];
void bfs(int x)
{
if(vis[x]<6)
{
for(int i=1;i<=n;i++)
{
if(!mm[i]&&m[x][i])
{
qu.push(i);
mm[i]=1;
vis[i]=vis[x]+1;
sum++;
}
}
}
if(!qu.empty())
{
x=qu.front();
qu.pop();
bfs(x);
}
}
void qk()
{
for(int i=1;i<=n;i++)
mm[i]=0;
}
void bfs_bl()
{
for(int i=1;i<=n;i++)
{
qk();
sum=1;
vis[i]=0;
mm[i]=1;
bfs(i);
printf("%d: %.2lf%%\n",i,(sum*1.0)/(n*1.0)*100.0);
}
}
int main()
{
int e,u,v;
scanf("%d %d",&n,&e);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
m[i][j]=0;
}
}
for(int i=1;i<=e;i++)
{
scanf("%d %d",&u,&v);
m[u][v]=m[v][u]=1;
}
bfs_bl();
return 0;
}

你可能感兴趣的:(PTA 数据结构与算法题目集(中文)5-7 六度空间 (30分))