#include <bits/stdc++.h>
using namespace std;
struct ab{
long long to;
double l;
};
long long n,m,a,b;
double pay[20005];
vector<ab>s[20005];
void dfs (double payy,long long num){
pay[num]=payy;
for (long long i=0;i<=s[num].size();i++)
if (pay[s[num][i].to]>payy/(double)((100-s[num][i].l)/100)) dfs((double)(payy/(double)((100-s[num][i].l)/100)),s[num][i].to);
}
int main(){
cin>>n>>m;
for (long long i=1;i<=m;i++){
long long x,y,z;
cin>>x>>y>>z;
s[x].push_back((ab){y,z});
s[y].push_back((ab){x,z});
}
for (long long i=1;i<=n;i++)
pay[i]=99990;
cin>>a>>b;
dfs(100,b);
printf("%.8lf",pay[a]);
return 0;
}
测试如下