Submission #1199259

#TimeUsernameProblemLanguageResultExecution timeMemory
1199259prikpaoEvacuation plan (IZhO18_plan)C++20
41 / 100
4090 ms35132 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define st first #define nd second #define pb push_back #define ins insert #define pii pair<int, int> #define pll pair<ll, ll> #define pdd pair<double, double> #define t3 tuple<int, int, int> #define t4 tuple<int, int, int, int> #define chmn(a, b) a=min(a, b) #define chmx(a, b) a=max(a, b) #define For(i, a, b) for(int i=(int)a; i<=(int)b; i++) #define Forx(i, a, b, x) for(int i=(int)a; i<=(int)b; i+=(int)x) #define F0r(i, n) for(int i=0; i<(int)n; i++) #define Rof(i, a, b) for(int i=(int)a; i>=(int)b; i--) #define R0f(i, n) for(int i=(int)(n-1); i>=(int)0; i--) #define rep(n) F0r(_, (int)n) #define all(v) (v).begin(), (v).end() const int N = 1e5+5; using ll = long long; using namespace std; #define int ll struct A{ int a, mn; bool operator<(const A& o)const{ return mn<o.mn; } }; struct B{ int a, w; bool operator<(const B& o)const{ return w>o.w; } }; int dis[N], mp[N]; vector<B> g[N]; void solve(){ int n, m, k, q, a, b, w, s, t; cin >> n >> m; rep(m){ cin >> a >> b >> w; g[a].pb({b, w}); g[b].pb({a, w}); } cin >> k; priority_queue<B> pq; fill(dis+1, dis+n+1, 1e18); rep(k){ cin >> a; pq.push({a, 0}); dis[a]=0; } while(!pq.empty()){ auto [a,w]=pq.top(); pq.pop(); if(w>dis[a])continue; for(auto i:g[a]){ if(w+i.w<dis[i.a]){ dis[i.a]=w+i.w; pq.push({i.a, w+i.w}); } } } //For(i, 1, n)cout << dis[i] << ' ';cout << '\n'; cin >> q; priority_queue<A> pq2; unordered_map<int, int> mp; rep(q){ mp.clear(); while(!pq2.empty())pq2.pop(); cin >> s >> t; mp[s]=dis[s]; pq2.push({s, dis[s]}); while(!pq2.empty()){ auto [a,mn]=pq2.top(); pq2.pop(); if(mp.count(a) && mn<mp[a])continue; //cout << a << ' ' << mn << '\n'; if(a==t){ cout << mn << '\n'; break; } for(auto i:g[a]){ int newm=min(mn, dis[i.a]); if(!mp.count(i.a) || newm>mp[i.a]){ mp[i.a]=newm; pq2.push({i.a, newm}); } } } //cout << "---------\n"; } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); int Tcases=1; //cin >> Tcases; while(Tcases--)solve(); return 0; }
#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...