Submission #1174146

#TimeUsernameProblemLanguageResultExecution timeMemory
1174146JuanJLEvent Hopping (BOI22_events)C++20
10 / 100
1595 ms55028 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]; } ll bfs(ll start, ll end){ vector<ll> cost(n+1,-1); vector<bool> visit(n,false); queue<pair<ll,ll>> cola; cola.push({start,n}); //cost[n]=-1; while(!cola.empty()){ ll nd = cola.front().fst; ll p = cola.front().snd; cola.pop(); if(visit[nd]) continue; visit[nd]=true; cost[nd]=cost[p]+1; //cout<<cost[nd]<<" "<<nd<<'\n'; for(auto i:adj[nd]) if(!visit[i]){ cola.push({i,nd}); } } 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; forn(i,0,n){ forn(j,0,n){ if(i==j) continue; if(r[i].snd>=r[j].fst&&r[i].snd<=r[j].snd){ adj[i].pb(j); } } } forn(i,0,q){ ll s,e; cin>>s>>e; s--; e--; ll res = bfs(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...