1 solutions
-
0
C++ :
#include<cstdio> #include<cstring> int n,m,q,x,y,v; int g[55][55][55]={0}; int main(){ scanf("%d%d",&n,&m); memset(g,255,sizeof(g)); for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&v); if(g[x][y][1]==-1||v<g[x][y][1]) g[x][y][1]=v; } for(int i=1;i<=n;i++) g[i][i][0]=0; for(int l=2;l<=n;l++) for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(g[i][k][l-1]>-1&&g[k][j][1]>-1&&(g[i][j][l]==-1||g[i][j][l]>g[i][k][l-1]+g[k][j][1])) g[i][j][l]=g[i][k][l-1]+g[k][j][1]; scanf("%d",&q); for(int i=1;i<=q;i++){ scanf("%d%d",&x,&y); double Max=111111111; for(int j=0;j<=n;j++){ if(g[x][y][j]!=-1 && g[x][y][j]<Max*j) Max=(double)g[x][y][j]/j; } if(Max!=111111111) printf("%.3f\n",Max+0.000005); else printf("OMG!\n"); } }
- 1
Information
- ID
- 590
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By