Submission #1174118

#TimeUsernameProblemLanguageResultExecution timeMemory
1174118JuanJLEvent Hopping (BOI22_events)C++20
0 / 100
1597 ms9396 KiB
#include <bits/stdc++.h> #define fst first #define snd second #define pb push_back #define SZ(x) (int)x.size() #define ALL(x) x.begin(),x.end() #define forn(i,a,b) for(int i = a; i < b; i++) #define FIN ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) using namespace std; typedef int ll; const int MAXN = 100000+4; vector<ll> adj[MAXN]; ll n; ll dijkstra(ll start, ll end){ vector<ll> cost(n,-1); vector<bool> visit(n,false); priority_queue<pair<ll,ll>> pq; pq.push({0,start}); while(!pq.empty()){ ll nd = pq.top().snd; ll cst = pq.top().fst*-1; pq.pop(); if(visit[nd]) continue; visit[nd]=true; cost[nd]=cst; for(auto i:adj[nd]){ pq.push({(cst+1)*-1,i}); } } return cost[end]; } int main(){ FIN; ll q; cin>>n>>q; vector<pair<ll,ll>> r(n); forn(i,0,n) cin>>r[i].fst>>r[i].snd; vector<pair<pair<ll,ll>,ll>> psr; // { { point, type } , ind } forn(i,0,n){ psr.pb({{r[i].fst,0},i}); psr.pb({{r[i].snd,1},i}); } sort(ALL(psr)); set<ll> s; forn(i,0,SZ(psr)){ if(psr[i].fst.snd==0){ s.insert(psr[i].snd); }else{ s.erase(s.find(psr[i].snd)); for(auto j:s){ adj[psr[i].snd].pb(j); } } } forn(i,0,q){ ll s,e; cin>>s>>e; s--; e--; ll res = dijkstra(s,e); if(res==-1) cout<<"impossible\n"; else cout<<res<<'\n'; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...