#include "bits/stdc++.h" #define int long long #define pi pair<long long, long long> #define a3 array<long long, 3> #define meow main using namespace std; void solve() { int n, m; cin >> n >> m; vector<int> P(n); for(auto &p : P) cin >> p; vector<vector<pi>> G(n); while(m--) { int a, b, w; cin >> a >> b >> w; G[a-1].push_back({b-1, w}); } set<pi> vis; vis.insert({0, 1}); queue<pi> Q; Q.push({0, 1}); while(!Q.empty()) { auto [v, val] = Q.front(); Q.pop(); for(auto [w, mul] : G[v]) { if(P[w] >= mul*val && P[n-1] >= mul*val) { if(vis.count({w, mul*val}) == 0) { Q.push({w, mul*val}); vis.insert({w, mul*val}); } } } } auto [v, val] = *(--(vis.end())); if(v == n-1) { cout << val << '\n'; } else cout << "-1\n"; } signed meow() { cin.tie((ostream *)!ios::sync_with_stdio(false)); int satori_moment; cin >> satori_moment; while (satori_moment--) solve(); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include "bits/stdc++.h" #define int long long #define pi pair<long long, long long> #define a3 array<long long, 3> #define meow main using namespace std; void solve() { int n, m; cin >> n >> m; vector<int> P(n); for(auto &p : P) cin >> p; vector<vector<pi>> G(n); while(m--) { int a, b, w; cin >> a >> b >> w; G[a-1].push_back({b-1, w}); } set<pi> vis; vis.insert({0, 1}); queue<pi> Q; Q.push({0, 1}); while(!Q.empty()) { auto [v, val] = Q.front(); Q.pop(); for(auto [w, mul] : G[v]) { if(P[w] >= mul*val && P[n-1] >= mul*val) { if(vis.count({w, mul*val}) == 0) { Q.push({w, mul*val}); vis.insert({w, mul*val}); } } } } auto [v, val] = *(--(vis.end())); if(v == n-1) { cout << val << '\n'; } else cout << "-1\n"; } signed meow() { cin.tie((ostream *)!ios::sync_with_stdio(false)); int satori_moment; cin >> satori_moment; while (satori_moment--) solve(); return 0; } |