您的位置:首页 > 其它

HDU 1869 六度分离(Floyd)

2012-06-20 19:22 477 查看
题目链接

裸的弗洛伊德,没想清楚判断是否是6度分离,WA了一次,还好仔细分析了代码+思考10多分钟后找到问题,2Y。。

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