其实就是模板的加法变成了乘法==但是注意“0”的处理!!看了标程才发现(⊙﹏⊙)b eps涉及double就记得用吧
3 1 0.5 0.5 0.5 1 0.4 0.5 0.4 1 3 1 2 2 3 1 3
0.500 0.400 0.500
#include <iostream> #include<cstdio> using namespace std; double dist[1005][1005]; int main() { // freopen("cin.txt","r",stdin); int n,q,a,b; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%lf",&dist[i][j]); } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { for(int k=0;k<n;k++) { if(dist[j][i]*dist[i][k]>dist[j][k]) dist[j][k]=dist[j][i]*dist[i][k]; } } } scanf("%d",&q); while(q--) { scanf("%d%d",&a,&b); a--;b--; if(dist[a][b]>0.000001) printf("%.3lf\n",dist[a][b]); else puts("What a pity!"); } } return 0; }