#include<bits/stdc++.h>
using namespace std;
const int N = 2010,MAX = 0x3f3f3f3f;
int n,m,a,b;
double edge[N][N],dist[N];//权重是B实际到账和A转出的比
bool chk[N];
void dijkstra(){
for(int i = 2;i <= n;i++){
int minV = MAX,used = 0;
for(int j = 1;j <= n;j++){
if(!chk[j] && dist[j] < minV){
minV = dist[j];
used = j;
}
}
chk[used] = true;
for(int j = 1;j <= n;j++){
if(edge[used][j] < MAX){
//扣除之后剩余部分的比例应当尽可能大
dist[j] = max(dist[j],dist[used] * edge[used][j]);
}
}
}
return;
}
int main(){
memset(edge,0x3f,sizeof(edge));
cin >> n >> m;
for(int i = 1,x,y;i <= m;i++){
double z;
cin >> x >> y >> z;
edge[x][y] = (100 - z) / 100.0;
edge[y][x] = (100 - z) / 100.0;
}
cin >> a >> b;
chk[a] = true;
for(int i = 1;i <= n;i++){
dist[i] = edge[a][i];
}
dist[a] = 1.00;
dijkstra();
printf("%.8lf",100.0 / dist[b]);
return 0;
}
(这wa跟我用邻接矩阵没关系吧doge)