#include <bits/stdc++.h>
using namespace std;
const int N = 2200, M = 1e5, INF = 0x3f3f3f3f;
typedef long long int LL;
typedef unsigned long long int ULL;
const int mod = 1000000007;
#define x first
#define y second
typedef pair<int, LL> PIL;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
int n, m;
double g[N][N];
double dist[N];
bool st[N];
int start, end1;
double dijkstra(int start)
{
dist[start] = 1;
priority_queue<PDI, vector<PDI>> heap;
heap.push({1.0, start});
while (heap.size())
{
auto t = heap.top();
heap.pop();
int ver = t.y;
double distance = t.x;
if(st[ver])
continue;
st[ver] = true;
for (int i = 1; i <= n; i++)
{
if (dist[i] < dist[ver] *g[ver][i])
{
dist[i] = dist[ver] * g[ver][i];
heap.push({dist[i], i});
}
}
}
return dist[end1];
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m;
for (int i = 0; i < m; i++)
{
int a, b, c;
cin >> a >> b >> c;
double z = 1 - 0.01 * c;
g[a][b] = g[b][a] = z;
}
cin >> start >> end1;
cout <<fixed<<setprecision(8)<< 100 * 1.0 / dijkstra(start) << endl;
return 0;
}