HDOJ-1869六度分离(FLOYD)

来源:互联网 发布:修真的电脑程序员 编辑:程序博客网 时间:2024/06/06 00:05

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);}


0 0
原创粉丝点击