首页 > 代码库 > hdu 1869 六度分离

hdu 1869 六度分离

floyd 点对点的路径

两个人如果认识 则记为1 两个人之间的路径超过7,则为no

 1 #include<stdio.h> 2 #include<string.h> 3 #define INF 9999999 4 int d[1000][1000]; 5 int v,e; 6 void init() 7 { 8     int i,j; 9     for(i = 0; i < v; i++)10         for(j = 0; j < v; j++)11         if(i == j) d[i][j] = 0;12         else d[i][j] = INF;13 }14 int floyd()15 {16     int i,j,k,cnt;17     for(k = 0;k < v; k++)18         for(i = 0 ;i < v; i++)19             for(j = 0;j < v;j++)20             {21                 cnt = d[i][k] + d[k][j];22                 if(cnt < d[i][j])23                 {24                     d[i][j]=cnt;//киЁз25                 }26             }27     for(i = 0 ; i < v; i++)28         for(j = 0;j < v;j++)29             if(d[i][j] > 7)return 0;30     return 1;31 }32 33 int main()34 {35     int i,j,u,w;36     while(scanf("%d%d",&v,&e)!=EOF)37     {38         init();39         for(i = 0; i < e; i++)40         {41             scanf("%d%d",&u,&w);42             d[u][w] = d[w][u] = 1;43         }44         if(floyd())printf("Yes\n");45         else printf("No\n");46     }47     return 0;48 }