hdu 1869

#include <iostream>
using namespace std;
int M[101][101];
int main()
{
    int i,j,m,n,a,b,k;
    int flag;
    while(cin>>n>>m){
            //flag=1;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
            if(i==j)  M[i][j]=0;
              else M[i][j]=M[j][i]=99999;
        }
    while(m--)
    {
        cin>>a>>b;
        M[a][b]=1;
        M[b][a]=1;

	}
        for(k=0;k<n;k++)
            for(i=0;i<n;i++)
               for(j=0;j<n;j++)
        {
            if(M[i][j]>(M[i][k]+M[k][j]))
              M[i][j]=M[i][k]+M[k][j];
        }
        flag=1;
        for(i=0;i<n;/*cout<<endl*/i++)
            for(j=0;j<n;j++)
            {
                //cout<< M[i][j]<<" ";
                if(M[i][j]>7)
                {
                  flag=0;  break;
                }
            }
    if(flag)  cout<<"Yes\n";
            else cout<<"No\n";

    }
    return 0;
}

hdu 1869 
题意是给m组人物关系,然后判断是否符合六度分离,代码主要就是三个for那里,然后要记得后面判断的时候是大于7,这题除了Florde算法,还有另外一种算法,不过我没记。。。。
posted @ 2014-12-11 17:34  __夜风  阅读(76)  评论(0编辑  收藏  举报