hdu 1869

时间:2021-04-17 20:54:07

题意是给m组人物关系,然后判断是否符合六度分离,代码主要就是三个for那里

然后要记得后面判断的时候是大于7,这题除了Florde算法,还有另外一种算法,不过我没记。。。。

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