제출 #595657

#제출 시각아이디문제언어결과실행 시간메모리
595657pedroslreyEvent Hopping (BOI22_events)C++14
10 / 100
115 ms4436 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e3 + 10;

int ls[MAXN], rs[MAXN], dist[MAXN];
vector<int> graph[MAXN];
bool marc[MAXN];

void bfs(int u, int n) {
	for (int i = 0; i < n; ++i) {
		marc[i] = false;
		dist[i] = 0;
	}

	queue<int> q;
	q.push(u);
	marc[u] = true;

	while (!q.empty()) {
		int u = q.front(); q.pop();

		for (int v: graph[u])
			if (!marc[v]) {
				marc[v] = true;
				dist[v] = dist[u] + 1;
				q.push(v);
			}
	}
}

int main() {
	int n, q;
	cin >> n >> q;

	for (int i = 0; i < n; ++i)
		cin >> ls[i] >> rs[i];

	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
			if (i != j && ls[i] <= rs[j] && rs[j] <= rs[i])
				graph[j].push_back(i);

	for (int i = 0; i < q; ++i) {
		int a, b;
		cin >> a >> b;

		--a; --b;

		bfs(a, n);

		if (!marc[b]) cout << "impossible\n";
		else cout << dist[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...