Submission #1246485

#TimeUsernameProblemLanguageResultExecution timeMemory
1246485adam17Event Hopping (BOI22_events)C++20
10 / 100
1596 ms30472 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct dint{
    int a;
    int b;
};

int N, Q, vzd;
vector<dint> A;
vector<int> ot;
vector<int> ot2;
vector<bool> uzavreno;
vector<vector<int>> sousede;

bool jde(int i, int j) {
    return ((A[j].a <= A[i].b) && (A[i].b <= A[j].b));
}

int main() {
    cin >> N >> Q;
    A.resize(N);
    for (int i = 0; i < N; i++) {
        cin >> A[i].a >> A[i].b;
    }

    sousede.resize(N);
    for (int i = 0; i < N; i++) {
        sousede[i].resize(0);
        for (int j = 0; j < N; j++) {
            if (jde(i, j)) {
                sousede[i].push_back(j);
            }
        }
    }

    for (int q = 0; q < Q; q++) {
        int u, v;
        cin >> u >> v; u--; v--;
        uzavreno.resize(N);
        for (int i = 0; i < N; i++) {
            uzavreno[i] = false;
        }
        vzd = -1;
        ot.resize(0);
        ot2.resize(1);
        ot2[0] = u;
        uzavreno[u] = true;
        while (ot2.size() > 0) {
            ot.resize(ot2.size());
            for (int i = 0; i < ot.size(); i++) {
                ot[i] = ot2[i];
            }
            ot2.resize(0);
            vzd++;
            while (ot.size()) {
                int o = ot.back(); ot.pop_back();
                if (o == v) {
                    cout << vzd << endl;
                    goto hotovo;
                }
                for (int s: sousede[o]) if (!(uzavreno[s])) {
                    ot2.push_back(s);
                    uzavreno[s] = true;
                }
            }
        }
        cout << "impossible\n";
        hotovo:;
    }

    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...