#include<bits/stdc++.h>
#define int long long
using namespace std;
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n,q;
cin >> n >> q;
vector<array<int,2>> val(n+1);
for(int i=1;i<=n;i++)
cin >> val[i][0] >> val[i][1];
vector<vector<int>> a(n+1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j) continue;
if(val[i][1]>=val[j][0] && val[i][1]<=val[j][1])
{
a[i].push_back(j);
}
}
}
vector<vector<int>> dist(n+1,vector<int>(n+1,1e18));
for(int i=1;i<=n;i++)
{
priority_queue<array<int,2>> q;
q.push({0,i});
dist[i][i] = 0;
while(q.size())
{
int s = q.top()[1];
q.pop();
for(int x:a[s])
{
if(dist[i][x]==1e18)
{
dist[i][x] = dist[i][s]+1;
q.push({-dist[i][x],x});
}
}
}
}
while(q--)
{
int s,e;
cin >> s >> e;
if(dist[s][e]==1e18) cout << "impossible" << endl;
else cout << dist[s][e] <<endl;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |