Submission #948058

#TimeUsernameProblemLanguageResultExecution timeMemory
9480584QT0RJakarta Skyscrapers (APIO15_skyscraper)C++17
22 / 100
1101 ms143576 KiB
#include <bits/stdc++.h> using namespace std; struct info{ int badge; int cur_pos; int nr_of_jumps; }; set<int> vis[30002]; deque<info> dq; vector<int> doges[30002]; int jmp[30002]; int n,m; void bfs01(int doge, int pos, int kon){ dq.push_back({doge,pos,0}); while(dq.size()){ info now=dq.front(); dq.pop_front(); if (now.cur_pos==kon){ cout << now.nr_of_jumps << '\n'; return; } for (auto u : doges[now.cur_pos])if (vis[u].find(now.cur_pos)==vis[u].end()){ dq.push_front({u,now.cur_pos,now.nr_of_jumps}); vis[u].insert(now.cur_pos); } if (now.cur_pos>=jmp[now.badge] && vis[now.badge].find(now.cur_pos-jmp[now.badge])==vis[now.badge].end()){ dq.push_back({now.badge,now.cur_pos-jmp[now.badge],now.nr_of_jumps+1}); vis[now.badge].insert(now.cur_pos-jmp[now.badge]); } if (now.cur_pos+jmp[now.badge]<n && vis[now.badge].find(now.cur_pos+jmp[now.badge])==vis[now.badge].end()){ dq.push_back({now.badge,now.cur_pos+jmp[now.badge],now.nr_of_jumps+1}); vis[now.badge].insert(now.cur_pos+jmp[now.badge]); } } cout << "-1\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int b,p,st,nd; cin >> n >> m; cin >> st >> jmp[0]; doges[st].push_back(0); cin >> nd >> p; for (int i = 2; i<m; i++){ cin >> b >> jmp[i]; doges[b].push_back(i); } bfs01(0,st,nd); }
#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...