Submission #867709

#TimeUsernameProblemLanguageResultExecution timeMemory
867709TAhmed33Event Hopping (BOI22_events)C++98
10 / 100
1541 ms41084 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e3 + 25;
vector <int> adj[MAXN];
pair <int, int> arr[MAXN];
int dist[MAXN][MAXN];
int main () {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n, q;
	cin >> n >> q;
	for (int i = 1; i <= n; i++) {
		int l, r;
		cin >> l >> r;
		arr[i] = {l, r};
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (i == j) continue;
			if (arr[i].second >= arr[j].first && arr[i].second <= arr[j].second) {
				adj[i].push_back(j);
			}
		}
	}
	for (int a = 1; a <= n; a++) {
		for (int i = 1; i <= n; i++) {
			dist[a][i] = 1e8;
		}
		dist[a][a] = 0;
		queue <int> cur; cur.push(a);
		while (!cur.empty()) {
			auto k = cur.front();
			cur.pop();
			for (auto j : adj[k]) {
				if (dist[a][j] > dist[a][k] + 1) {
					dist[a][j] = dist[a][k] + 1;
					cur.push(j);
				}
			}
		}
	}
	while (q--) {
		int a, b;
		cin >> a >> b;
		if (dist[a][b] > n) {
			cout << "impossible\n";
		} else {
			cout << dist[a][b] << '\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...