您的位置:首页 > 其它

hdu1869 六度分离 (floyd)

2013-08-08 21:00 260 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869

将每个人看作一个点,问题转化为图,求任意两点之间的距离,距离大于7不符合要求(间隔6个人)

#include <stdio.h>
#include <string.h>
#define INF 99999

int main()
{
int n,m,i,j,k,flag;
int map[102][102];
while(scanf("%d %d",&n,&m)!=EOF)
{
flag=0;
for (i=0;i<n;++i)
{
for(j=0;j<n;++j)
map[i][j]=INF;
map[i][j]=0;
}
for (k=0;k<m;++k)
{
scanf("%d %d",&i,&j);
map[i][j]=1;
map[j][i]=1;
}
for (k=0;k<n;++k)
{
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
}
for (i=0;i<n;++i)
{
for(j=0;j<i;++j)
if(map[i][j]>7)
{
flag=1;
break;
}
}
if(flag==1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: