제출 #948076

#제출 시각아이디문제언어결과실행 시간메모리
9480764QT0RJakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
1097 ms2240 KiB
#include <bits/stdc++.h> using namespace std; struct info{ int badge; int cur_pos; int nr_of_jumps; }; bool 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}); dq.push_back({-doge,pos,0}); vis[doge]=true; 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]){ vis[u]=true; if (jmp[u]==jmp[abs(now.badge)])continue; dq.push_front({u,now.cur_pos,now.nr_of_jumps}); dq.push_front({-u,now.cur_pos,now.nr_of_jumps}); } if (now.cur_pos>=jmp[abs(now.badge)] && now.badge<0){ dq.push_back({now.badge,now.cur_pos-jmp[abs(now.badge)],now.nr_of_jumps+1}); } if (now.cur_pos+jmp[abs(now.badge)]<n && now.badge>0){ dq.push_back({now.badge,now.cur_pos+jmp[now.badge],now.nr_of_jumps+1}); } } 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[1]; doges[st].push_back(1); cin >> nd >> p; for (int i = 2; i<m; i++){ cin >> b >> jmp[i]; doges[b].push_back(i); } bfs01(1,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...