# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
152155 | songc | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 1080 ms | 39364 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
int N, M, S, E;
vector<int> D[30303];
set<pii> dchk;
bool bchk[30303];
struct Data{
int x, y, d;
};
deque<Data> Q;
int main(){
scanf("%d %d", &N, &M);
int x, y;
scanf("%d %d", &x, &y);
D[x].push_back(y);
S = x;
scanf("%d %d", &x, &y);
D[x].push_back(y);
E = x;
for (int i=3; i<=M; i++){
scanf("%d %d", &x, &y);
D[x].push_back(y);
}
for (int v : D[S]){
if (dchk.find(pii(S, v)) == dchk.end()){
Q.push_back((Data){S, v, 0});
dchk.insert(pii(S, v));
}
}
bchk[S] = true;
while (!Q.empty()){
Data T = Q.front();
Q.pop_front();
if (T.x == E){
printf("%d\n", T.d);
return 0;
}
if (!bchk[T.x]){
for (int v : D[T.x]){
if (dchk.find(pii(T.x, v)) == dchk.end()){
Q.push_front((Data){T.x, v, T.d});
dchk.insert(pii(T.x, v));
}
}
bchk[T.x] = true;
}
if (T.x-T.y >= 0 && dchk.find(pii(T.x-T.y, T.y)) == dchk.end()){
Q.push_back((Data){T.x-T.y, T.y, T.d+1});
dchk.insert(pii(T.x-T.y, T.y));
}
if (T.x+T.y < N && dchk.find(pii(T.x+T.y, T.y)) == dchk.end()){
Q.push_back((Data){T.x+T.y, T.y, T.d+1});
dchk.insert(pii(T.x+T.y, T.y));
}
}
puts("-1");
return 0;
}
Compilation message (stderr)
# | 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... |