Floyed最短路變形
阿新 • • 發佈:2018-12-22
給定一些人,問是否滿足六度空間的要求。
著名假說,大意是說,任何2個素不相識的人中間最多隻隔著6個人,即只用6個人就可以將他們聯絡在一起,因此他的理論也被稱為“六度分離”理論(six degrees of separation)。
#include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int pri[210][210]; int n,m; void floyed() { for(int k=0;k<n;k++){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ pri[i][j]=min(pri[i][j],pri[i][k]+pri[k][j]); } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { int a,b; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ pri[i][j]=i==j?0:INF; } } for(int i=0;i<m;i++){ cin>>a>>b; pri[a][b]=pri[b][a]=1; } floyed(); int flag=1; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(pri[i][j]>7){flag=0;break;} } } if(flag==0)cout<<"No"<<endl; else cout<<"Yes"<<endl; //memset(a,0x3f,sizeof(a)) } }