[c]HDOJ 1869 六度分离

来源:互联网 发布:淘宝买流量从哪里进货 编辑:程序博客网 时间:2024/06/05 19:58

http://acm.hdu.edu.cn/showproblem.php?pid=1869

题目标题:六度分离

题目大意:求每个点的与别的点的最短路,超过6则输出NO,不超过输出YES


只要一对顶点距离大于6,则可输出结果,所以此题用floyd算法

#include<iostream>  #include<stdio.h>  #include<string.h>  #include<algorithm>  using namespace std;    int n,m;  int a[105][105];int min(int x,int y){if(x>y) return y;else return x;}  int main()  {      while(cin>>n>>m)      {          memset(a,63,sizeof(a));          for(int i=0;i<n;i++) a[i][i]=0;          for(int i=0;i<m;i++)          {              int x,y;              scanf("%d%d",&x,&y);              a[x][y]=1;a[y][x]=1;          }          for(int k=0;k<n;k++)              for(int i=0;i<n;i++)                   for(int j=0;j<n;j++)                      a[i][j]=min(a[i][j],a[i][k]+a[k][j]);          bool sign=true;          for(int i=0;i<n;i++){            for(int j=0;j<n;j++){                if(a[i][j]>7){                    sign=false;                      break;                  }              }              if(sign==false) break;          }          if(sign==true) cout<<"Yes"<<endl;         else cout<<"No"<<endl;      }      return 0;}  


0 0
原创粉丝点击