http://ybt.ssoier.cn:8088/problem_show.php?pid=1344
#include <bits/stdc++.h>
using namespace std;
int n,m,a,b,start,en;
double s[10001][10001],ans[10001],c;
bool p[10001];
void Dijkstra(){
p[start]=true;
for(int i=1;i<=n;i++){
ans[i]=s[start][i];
}
for(int i=1;i<n;i++){
int minn=1e9,a=-1;
for(int j=1;j<=n;j++){
if(!p[j] && ans[j]<=minn){
minn=ans[j];
a=j;
}
}
if(a==-1)
break;
p[a]=true;
for(int j=1;j<=n;j++){
if(ans[j]<ans[a]*s[a][j]){
ans[j]=ans[a]*s[a][j];
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
s[i][j]=-1e9;
}
}
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
s[a][b]=s[b][a]=(100-c)/100;
//cout<<1-c/100.0<<endl;
}
cin>>start>>en;
Dijkstra();
/*for(int i=1;i<=n;i++){
cout<<ans[i]<<' ';
}*/
cout<<fixed<<setprecision(8)<<100/ans[en];
return 0;
}
写的代码除了样例,其他都过不了