HDU 1869 六度分离(Floyd)
裸的弗洛伊德,没想清楚判断是否是6度分离,WA了一次,还好仔细分析了代码+思考10多分钟后找到问题,2Y。。
1 #include <stdio.h> 2 #include <string.h> 3 #define N 1000000 4 int p[301][301]; 5 int main() 6 { 7 int sv,ev,i,j,k,n,m,z; 8 while(scanf("%d%d",&n,&m)!=EOF) 9 { 10 for(i = 0; i <= n-1; i ++) 11 for(j = 0; j <= n-1; j ++) 12 { 13 if(i != j) 14 p[i][j] = N; 15 else 16 p[i][j] = 0; 17 } 18 for(i = 1; i <= m; i ++) 19 { 20 scanf("%d%d",&sv,&ev); 21 p[sv][ev] = 1; 22 p[ev][sv] = 1; 23 } 24 for(k = 0; k <= n-1; k ++) 25 for(i = 0; i <= n-1; i ++) 26 for(j = 0; j <= n-1; j ++) 27 { 28 if(p[i][j] > p[i][k] + p[k][j]) 29 p[i][j] = p[i][k] + p[k][j]; 30 } 31 z = 0; 32 for(i = 0;i <= n-1;i ++) 33 { 34 for(j = 0;j <= i;j ++) 35 { 36 if(p[i][j] > 7) 37 { 38 z = 1; 39 break; 40 } 41 } 42 } 43 if(!z) 44 printf("Yes\n"); 45 else 46 printf("No\n"); 47 } 48 return 0; 49 }

浙公网安备 33010602011771号