2003(Floyd)
来源:互联网 发布:java关键词过滤 编辑:程序博客网 时间:2024/05/16 00:50
#include <cstdio>#include <memory>const int N = 20;double c[N][N];int main(){int n;int i, j;double num;while(scanf("%d", &n)==1&&n){memset(c, 0, sizeof(c));for(i=0; i<n; i++){for(j=0; j<n; j++){scanf("%lf", &num);if(i==j)c[i][j] = 1;else if(num>0){if(!(c[i][j]>0))c[i][j] = num;if(!(c[j][i]>0))c[j][i] = 1.0/num;}}}for(int p=0; p<n; p++) //Floyd{for(i=0; i<n; i++){for(j=0; j<n; j++){if(p!=i&&p!=j&&c[i][j]>0&&c[i][p]>0){if(!(c[j][p]>0))c[j][p] = c[i][p]/c[i][j];if(!(c[p][j]>0))c[p][j] = 1.0/c[j][p];}}}}for(i=0; i<n; i++){printf("%.2lf", c[i][0]);;for(j=1; j<n; j++)printf(" %.2lf", c[i][j]);putchar('\n');}putchar('\n');}return 0;}