标签:
find the safest road#include <stdio.h> #include <string.h> float c[1010][1010]; float dist[1010]; void dijs(int v,int n) { bool s[1010]; for(int i=1;i<=n;i++) { dist[i]=c[v][i]; s[i]=0; } dist[v]=1; //以起点开始的距离为1所以起点与终点相同时直接为1 s[v]=1; for(int i=2;i<=n;i++) { float temp=0; int u=v; for(int k=1;k<=n;k++) { if(!s[k]&&dist[k]>temp) { u=k; temp=dist[k]; } } s[u]=1; for(int k=1;k<=n;k++) { if(!s[k]&&dist[k]<dist[u]*c[u][k]) dist[k]=dist[u]*c[u][k]; } } } int main() { int n; while(~scanf("%d",&n)) { for(int i=1;i<=n;i++) for(int k=1;k<=n;k++) scanf("%f",&c[i][k]); int c; scanf("%d",&c); while(c--) { int s1,s2; scanf("%d%d",&s1,&s2); dijs(s1,n); if(dist[s2]==0) printf("What a pity!\n"); else printf("%.3f\n",dist[s2]); } } return 0; }
标签:
原文地址:http://blog.csdn.net/a73265/article/details/46367551