您的位置:首页 > 理论基础 > 数据结构算法

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

2017-04-15 13:44 661 查看
#include <stdio.h>

#include <queue>

/*

bfs 起始结点的层数为0,以后的结点层数为上一结点层数+1 输出时%% 

*/

using namespace std;

queue<int>qu;

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: