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;
}
将每个人看作一个点,问题转化为图,求任意两点之间的距离,距离大于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;
}
相关文章推荐
- 【HDU】-1869-六度分离(最短路)(floyd)
- hdu 1869 六度分离(floyd)
- HDU 1869 六度分离(floyd)
- hdu 1869 六度分离 Floyd
- HDU 1869 六度分离(最短路 floyd)
- HDU-1869—六度分离 (Floyd)
- hdu1869 六度分离(Floyd)
- HDU 1869 六度分离 floyd
- hdu 1869 六度分离(floyd最短路)
- HDU 1869 六度分离 (floyd)
- HDU 1869 六度分离 (Floyd模板题)
- HDU 1869 六度分离 (floyd)
- hdu1869 六度分离(Floyd)
- HDU-1869 六度分离(Floyd)
- HDU 1869 六度分离(floyd)
- HDU 1869 六度分离(Floyd)
- HDU 1869-六度分离(floyd)
- HDU:1869 六度分离(floyd最短路径算法打表)
- HDU 1869 六度分离(Floyd)
- HDU 1869 六度分离(简单Floyd)