답안 #786129

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
786129 2023-07-18T04:22:29 Z devariaota Jakarta Skyscrapers (APIO15_skyscraper) C++17
10 / 100
1 ms 1236 KB
#include <bits/stdc++.h>
using namespace std;

# define int long long
# define fir first
# define sec second
# define pb push_back
# define endl "\n"

const int cnst = 2e5+5;
bool mutipletestcase = 0;
//bool debug = false;

void solve() {
    int n, m; cin >> n >> m;

    int x[n+5];
    int y[n+5];

    vector<int> vec[n+5];

    for(int i = 1; i<=m; i++) {
        cin >> x[i] >> y[i];
        vec[x[i]].pb(i);
    }

    queue<pair<int, int>> q;
    for(auto v: vec[0]) q.push({0, y[v]});

    int dis[n+5][3005];
    memset(dis, 0, sizeof(dis));

    while(!q.empty()) {
        auto[a, step] = q.front(); q.pop();

        // cerr << a << " " << step << " " << dis[a][step] << endl;

        if(a == x[2]) {
            cout << dis[a][step] << endl;
            return;
        }

        for(auto v: vec[a]) {
            int b = a+y[v];
            int c = a-y[v];

            // cerr << "X:  " <<  v << " " <<  b << " " << c << endl;

            if(0 <= b && b < n && !dis[b][y[v]]) {
                q.push({b, y[v]});
                dis[b][y[v]] = dis[a][step] + 1;
            }
            if(0 <= c && c < n && !dis[c][y[v]]) {
                q.push({c, y[v]});
                dis[c][y[v]] = dis[a][step]+1;
            }
        }

        int b = a+step;
        int c = a-step;

        if(0 <= b && b < n && !dis[b][step]) {
            q.push({b, step});
            dis[b][step] = dis[a][step] + 1;
        }
        if(0 <= c && c < n && !dis[c][step]) {
            q.push({c, step});
            dis[c][step] = dis[a][step]+1;
        }
    }

    cout << -1 << endl;
}

signed main() {
    ios_base::sync_with_stdio(false);
    int t = 1;
    if(mutipletestcase) cin >> t; 
    while(t--) solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 0 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Incorrect 1 ms 1236 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 0 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 0 ms 596 KB Output is correct
8 Incorrect 1 ms 1236 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 0 ms 596 KB Output is correct
5 Correct 0 ms 596 KB Output is correct
6 Correct 0 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Incorrect 1 ms 1236 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 0 ms 468 KB Output is correct
5 Correct 1 ms 596 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Incorrect 1 ms 1236 KB Output isn't correct
9 Halted 0 ms 0 KB -