三个奇怪的测评结果
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a,b,z;
bool vis[20001];
double dis[20001],Map[4001][4001],zz;
signed main(){
cin>>n>>m;
for(int i=1;i<=2000;++i)
for(int j=1;j<=2000;++j)
Map[i][j]=0x7fffffff;
for(int i=1;i<=2000;++i) dis[i]=0x7fffffff;
for(int i=1;i<=m;i++){
cin>>a>>b>>z;
zz=(100-z)/100.00;
Map[a][b]=Map[b][a]=zz;
}
cin>>a>>b;
int k=a,K,Min=1e9;
vis[a]=1;
dis[a]=1;
for(int i=2;i<=n;i++){
Min=1e9;
for(int j=1;j<=n;j++){
if(vis[j]==0 && dis[j]>dis[k]*Map[k][j]){
dis[j]=dis[k]*Map[k][j];
if(Min>dis[j]){
Min=dis[j];
K=j;
}
}
k=K;
vis[k]=1;
}
}
printf("%.8lf",100.00/dis[b]);
}