您的位置:首页 > 其它

HDOJ-1869六度分离(FLOYD)

2015-05-19 15:59 399 查看
FLOYD,直接认识的两个人距离设为1,判断是否存在两个人之间的最短距离大于7的情况。

#include <cstdio>
#include <cstdlib>
#include <cstring>

void work(int n,int m)
{
    int f[105][105];
    int i,j,k,x,y,flag;

    memset(f,0x3F,sizeof(f));
    for(i=0;i<=n;i++) f[i][i]=0;

    while(m--)
    {
        scanf("%d%d",&x,&y);
        f[x][y]=f[y][x]=1;
    }

    for(k=0;k<n;k++)
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                if(f[i][j]>f[i][k]+f[k][j])
                    f[i][j]=f[i][k]+f[k][j];
    flag=1;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            if(f[i][j]>7)
            {
                flag=0;
                break;
            }

    printf(flag?"Yes\n":"No\n");
}

int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
        work(n,m);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: