#include #include #include #include //#include #include #include #include #include #include //#include #include #include #include //#include #include #include //#include #include #include #include #include const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; using namespace std; typedef long long ll; typedef vector vi; typedef vector vll; typedef pair pii; const int MAXM = 30; int A[MAXM], B[MAXM], C[MAXM]; bool vis[MAXM]; int main() { cin.tie(0); ios::sync_with_stdio(false); int N, M; cin >> N >> M; if (M > 30) return 0; for (int i = 0; i < M; i++) { cin >> A[i] >> B[i] >> C[i]; } double ans = 0; for (int s = 0; s < 1<>i)&1) tmp *= C[i]/100.; else tmp *= 1-C[i]/100.; } queue que; memset(vis, false, sizeof(vis)); que.push(0); while (!que.empty()) { int now = que.front(); vis[now] = true; que.pop(); for (int i = 0; i < M; i++) { if (now == A[i] && ((s>>i)&1)) if (!vis[B[i]]) { que.push(B[i]); vis[B[i]] = true; } } } if (vis[N-1]) ans += tmp; } printf("%.10lf\n", ans); return 0; }