#include<bits/stdc++.h>
using namespace std;
/*最短路径dijst*/
const int maxN=2005,maxM=200010;
double dis[maxN],ans;
int head[maxN],cnt=1;
int n,m,x,y,a,b,z;
bool vis[maxN];
struct edge{
int to;
double val;
int next;
}e[maxM];
struct node{
int pos;
double val;
bool operator < (const node &x)const{
return this->val < x.val;
}
};
void add(int x, int y, int val){
e[cnt].to=y;
e[cnt].val=1.0-(double)val/100.0;
e[cnt].next=head[x];
head[x]=cnt++;
}
priority_queue<node> q;
void dijst(int a){
q.push((node){a,1.0});
while(!q.empty()){
int x=q.top().pos;
q.pop();
if(vis[x]) continue;
vis[x]=1;
for(int i=head[x];i;i=e[i].next){
double v=e[i].val;
int t=e[i].to;
if(dis[t]<dis[x]*v){
dis[t]=dis[x]*v;
if(!vis[t]) q.push((node){t,v});
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
dis[i]=0.0;
}
for(int i=0;i<m;i++){
cin>>x>>y>>z;
add(x,y,z);
add(y,x,z);
}
cin>>a>>b;
dis[a]=1.0;
dijst(a);
ans=100.0/dis[b];
// cout<<fixed<<setprecision(8)<<ans<<endl;
printf("%.8f",ans);
return 0;
}