Submission #1171019

#TimeUsernameProblemLanguageResultExecution timeMemory
1171019FaggiEvent Hopping (BOI22_events)C++20
10 / 100
1599 ms253088 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define forn(i,n) for(i=0; i<n; i++)
#define all(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;

const int MAXN=1e5+1;

vector<ll>grafo[MAXN];
ll n;
vector<ll> calc(ll a)
{
    queue<ll>pq;
    vector<ll>dist(n,LLONG_MAX);
    vector<bool>vis(n,0);
    dist[a]=0;
    pq.push(a);
    while(pq.size())
    {
        ll nod=pq.front();
        pq.pop();
        if(vis[nod])
            continue;
        vis[nod]=1;
        for(auto k:grafo[nod])
        {
            if(dist[k]>dist[nod]+1)
            {
                dist[k]=dist[nod]+1;
                pq.push(k);
            }
        }
    }
    return dist;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    ll q, i, pot=1, a, b, act=-1, l, r, ant=LLONG_MIN, ans, j;
    cin >> n >> q;
    vector<pair<ll,ll>>v;
    for(i=0; i<n; i++)
    {
        cin >> a >> b;
        v.pb({a,b});
    }
    map<ll,vector<ll>>m;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(v[j].fr<=v[i].se&&v[j].se>=v[i].se)
                grafo[i].pb(j);
        }
    }
    vector<vector<ll>>prec(n,vector<ll>(n));
    for(i=0; i<n; i++)
        prec[i]=calc(i);
    while(q--)
    {
        cin >> a >> b;
        a--;
        b--;
        if(prec[a][b]!=LLONG_MAX)
            cout << prec[a][b] << '\n';
        else
            cout << "impossible\n";

    }
    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...