이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |