#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,ans;
double dis[2031];
bool vis[2031];
struct Edge{ int v; double w; };
struct Node{
int u; double w;
bool operator < (const Node &b) const{
return w>b.w;
}
};
vector<Edge> G[200031];
void dijkstra(int s){
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++) dis[i]=2147483647.0;
dis[s]=100.0;
priority_queue<Node> pq; pq.push({s,100.0});
while(!pq.empty()){
Node now=pq.top(); pq.pop();
if(vis[now.u]) continue; vis[now.u]=1;
for(auto i:G[now.u]){
if(dis[i.v]>dis[now.u]/i.w)
dis[i.v]=dis[now.u]/i.w,pq.push({i.v,dis[i.v]});
}
}
}
int main(){
cin>>n>>m;
for(int i=1,u,v,w;i<=n;i++)
cin>>u>>v>>w,G[u].push_back({v,1.0-w*0.01}),G[v].push_back({u,1.0-w*0.01});
cin>>a>>b;
dijkstra(b),cout<<setprecision(8)<<fixed<<dis[a];
return 0;
}