Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
157492 | 冼俊烨 | 银行转帐 | C++ | 通过 | 100 | 0 MS | 288 KB | 726 | 2024-07-20 09:48:41 |
#include<bits/stdc++.h> using namespace std; double a[1001][1001],dis[1001]={0},maxn; int n,m,i,j,k,x,y,f[1001]={0}; void init() { scanf("%d %d",&n,&m); for(i=1;i<=m;i++) { scanf("%d %d",&j,&k); scanf("%lf",&a[j][k]); a[k][j]=a[j][k]=(100-a[j][k])/100; } scanf("%d %d",&x,&y); } void dij(int x) { for(i=1;i<=n;i++)dis[i]=a[x][i]; dis[x]=1; f[x]=1; for(i=1;i<=n-1;i++) { maxn=0; for(j=1;j<=n;j++) { if(f[j]==0&&dis[j]>maxn) { k=j; maxn=dis[j]; } } f[k]=1; if(k==y)break; for(j=1;j<=n;j++) { if(f[j]==0&&dis[k]*a[k][j]>dis[j])dis[j]=dis[k]*a[k][j]; } } } int main() { init(); dij(x); printf("%0.8lf",100/dis[y]); return 0; }