ACM-最短路 hdu 1869(六度分离)

题目链接

题目大意:中文题目就不必多说了

思路:  直接用Floyd算法求任意两人之间的距离,看看是否有距离>7的一对点即可.

AC代码:

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include<algorithm>
#include<cstring>
#include<queue>
#define MAX 0x3f3f3f3f
using namespace std;
int a,b,n,m,l;
int z[200][200],c;
int v[200],biao[200];
void Floyd()
{
    for(int k=0;k<a;k++)
        {
            for(int i=0;i<a;i++)
            {
                for(int j=0;j<a;j++)
                {
                        z[i][j]=min(z[i][j],z[i][k]+z[k][j]);
                }
            }
        }
}
int main()
{
    while(~scanf("%d %d",&a,&b))
    {
         for(int i=0;i<a;i++)
         {
              for(int j=0;j<a;j++)
              {
                  z[i][j]=z[j][i]=MAX;
                  if(i==j)  z[i][j]=z[j][i]=0;
              }
         }
        for(int i=1;i<=b;i++)
        {
            scanf("%d %d",&l,&m);
            z[l][m]=z[m][l]=1;
        }
        Floyd();
        int p=0;
        for(int i=0;i<a;i++)
        {
           for(int j=0;j<a;j++)
            {
                if(z[i][j]>7)
                {
                    p=1;
                    break;
                }
            }
        }
        if(!p)
        {
            printf("Yes\n");
        }
        else printf("No\n");


    }
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

ACM-最短路 hdu 1869(六度分离)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭