제출 #1094003

#제출 시각아이디문제언어결과실행 시간메모리
1094003NurislamEvacuation plan (IZhO18_plan)C++17
41 / 100
4090 ms41244 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define int long long template <class F, class _S> bool chmin(F &u, const _S &v){ bool flag = false; if ( u > v ){ u = v; flag |= true; } return flag; } template <class F, class _S> bool chmax(F &u, const _S &v){ bool flag = false; if ( u < v ){ u = v; flag |= true; } return flag; } const int N = 1e6+50, inf = 1e18+200; //int mod = 998244353; //int mod = 1000000007; //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //#define rnd(l, r) uniform_int_distribution <int> (l, r)(rng) void solve(){ int n, m; cin >> n >> m; vector<vector<array<int, 2>> > g(n+1); for (int i = 0; i < m; i++){ int a, b, w; cin >> a >> b >> w; g[a].pb({w, b}); g[b].pb({w, a}); } vector<int> d(n+1, inf); auto rere = [&]()->void{ int k; cin >> k; priority_queue<array<int, 2>> q; for(int i = 0; i < k; i++){ int x;cin >> x; q.push({0, x}); d[x] = 0; } while(q.size()){ auto [dis, ps] = q.top(); q.pop(); dis = -dis; if(d[ps] < dis)continue; for(auto [w, to]:g[ps]) if(chmin(d[to], d[ps] + w)) q.push({-d[to], to}); } };rere(); auto dfs = [&](int s, int t) -> int{ priority_queue<array<int,2>> q; q.push({d[s], s}); vector<int> dp(n+1, 0); dp[s] = d[s]; while(q.size()){ auto [mx, ps] = q.top(); q.pop(); //cout << ps << ' ' << mx << '\n'; if(ps == t)return dp[ps]; if(mx < dp[ps])continue; for(auto [w, to]:g[ps]) if(chmax(dp[to], min(d[to], dp[ps]))) q.push({dp[to], to}); } return 0; }; int q; cin >> q; while(q--){ int s, t; cin >> s >> t; int ans = dfs(s, t); cout << ans << '\n'; } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int tt = 1; //cin >> tt; while(tt--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...