HDU1596-find the safest road

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

模板题

#include<stdio.h>
#include<stdlib.h>
#define N 1005
int n,m;
float map[N][N],dis[N][N];
void floyd()
{
    int i,j,k;
    for(i=1;i<=n;i++)
       for(j=1;j<=n;j++)
          dis[i][j]=map[i][j];
    for(k=1;k<=n;k++)
       for(i=1;i<=n;i++)
          for(j=1;j<=n;j++)
               if(dis[i][j]<dis[i][k]*dis[k][j])
                dis[i][j]=dis[i][k]*dis[k][j];
}
int main(void)
{
    int i,j,s,t;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
              scanf("%f",&map[i][j]);
        floyd();
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
            scanf("%d%d",&s,&t);
            if(dis[s][t]==0)
                printf("What a pity!\n");
            else
                printf("%.3f\n",dis[s][t]);
        }
    }
    return 0;
}
posted @ 2012-08-30 20:50  Yogurt Shen  阅读(201)  评论(0编辑  收藏  举报