Submission #1177259

#TimeUsernameProblemLanguageResultExecution timeMemory
1177259abdalrhman_sfarEvent Hopping (BOI22_events)C++20
10 / 100
1599 ms128220 KiB
/*
 *
 * author: AbdAlrhman_Sfar
 *
**/

#include<bits/stdc++.h>
using namespace std;
#define ll long long 

const int N = 5000 + 5;
const int LOG = 20;

vector<vector<int>> adj;
int dist[N][N];

void bfs(int&u) {
    queue<int> q;
    q.push(u); dist[u][u] = 0;
    while (q.size()) {
        int v = q.front();
        q.pop();
        for (auto& it : adj[v]) {
            if (dist[u][it] == 6000) {
                dist[u][it] = dist[u][v] + 1;
                q.push(it);
            }
        }
    }
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int n, q; cin >> n >> q;
    for (auto& it : dist) {
        for (auto& i : it)
            i = 6000;
    }
    adj.resize(n);
    vector<pair<int, int>> v(n);
    int i, j;
    for (i = 0; i < n; ++i) {
        cin >> v[i].first >> v[i].second;
        for (j = 0; j < i; ++j) {
            if (v[i].first <= v[j].second && v[j].second <= v[i].second) adj[j].emplace_back(i);
            if (v[j].first <= v[i].second && v[i].second <= v[j].second) adj[i].emplace_back(j);
        }
    }
    for (i = 0; i < n; ++i) bfs(i);
    while (q--) {
        int u, v; cin >> u >> v; --u, --v;
        if (dist[u][v] == 6000) cout << "impossible\n";
        else cout << dist[u][v] << '\n';
    }
}
#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...