比赛 |
10101115 |
评测结果 |
WWWWWWWWWW |
题目名称 |
最小密度路径 |
最终得分 |
0 |
用户昵称 |
wangwangdog |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2010-11-15 11:17:11 |
显示代码纯文本
- #include<stdio.h>
- long long n,m,map[51][51],i,j,k,nn,a,b,l;
- struct aaa
- {
- long long l,bian;
- }d[51][51];
- FILE *fin,*fout;
- int main()
- {
- fin=fopen("path.in","rb");
- fout=fopen("path.out","wb");
- fscanf(fin,"%lld%lld\n",&n,&m);
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- map[i][j]=-1;
- for(i=1;i<=m;i++)
- {
- fscanf(fin,"%lld%lld%lld\n",&a,&b,&l);
- map[a][b]=l;
- }
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- {
- d[i][j].l=map[i][j];
- if(map[i][j]!=-1)d[i][j].bian=1;
- else d[i][j].bian=0;
- }
- for(k=1;k<=n;k++)
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- {
- if(d[i][k].l!=-1&&d[k][j].l!=-1&&d[i][j].l!=-1)
- {
- if((d[i][k].l+d[k][j].l)/(d[i][k].bian+d[k][j].bian)<=d[i][j].l/d[i][j].bian)
- {d[i][j].l=d[i][k].l+d[k][j].l;d[i][j].bian=d[i][k].bian+d[k][j].bian;}
- }
- if(d[i][k].l!=-1&&d[k][j].l!=-1&&d[i][j].l==-1)
- {
- d[i][j].l=d[i][k].l+d[k][j].l;
- d[i][j].bian=d[i][k].bian+d[k][j].bian;
- }
-
- }
- fscanf(fin,"%lld\n",&nn);
- for(i=1;i<=nn;i++)
- {
- fscanf(fin,"%lld%lld\n",&a,&b);
- if(d[a][b].l!=-1)
- {
- double y=d[a][b].l;
- double x=y/d[a][b].bian;
- fprintf(fout,"%0.3lf\n",x);
- }
- else fprintf(fout,"OMG!");
- }
- fclose(fin);
- fclose(fout);
- return 0;
- }