HDU 1869 六度分离【floyd】

时间:2023-12-19 15:11:08

题意:给出n个人,m个关系,问是否满足任意两个人之间的距离通过6个人就可以连接

用floyd就可以了,注意距离是大于7

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=;
int d[maxn][maxn];
int n,m; int floyd(){
for(int k=;k<n;k++)
for(int i=;i<n;i++)
for(int j=;j<n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]); for(int i=;i<n;i++){
for(int j=;j<n;j++){
if(d[i][j]>) return ;
}
}
return ;
} int main(){
while(scanf("%d %d",&n,&m)!=EOF){
for(int i=;i<n;i++){
for(int j=;j<n;j++){
if(i==j) d[i][j]=;
else d[i][j]=INF;
}
}
for(int i=;i<=m;i++){
int u,v;
scanf("%d %d",&u,&v);
d[u][v]=d[v][u]=;
} if(floyd()) printf("Yes\n");
else printf("No\n");
}
return ;
}