Submission #877421

#TimeUsernameProblemLanguageResultExecution timeMemory
877421vjudge1Event Hopping (BOI22_events)C++17
10 / 100
1553 ms30584 KiB
///#include "art.h"
#include <bits/stdc++.h>

using namespace std;

const long long maxn = 1e5;
const long long mod = 1e9+7;
const int logn=30;

int main()
{
    ios::sync_with_stdio(false);
    int n,q;
    cin>>n>>q;
    vector<pair<int,int>>v;
    for(int i=0;i<n;i++)
    {
        int x,y;
        cin>>x>>y;
        v.push_back({x,y});
    }
    vector<int>g[n];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(j==i)continue;
            if(v[j].first<=v[i].second)
            {
                if(v[j].second>=v[i].second)
                {
                    g[i].push_back(j);
                }
            }
        }
    }
    while(q--)
    {
        int ans=-1;
        int l,r;
        cin>>l>>r;
        l--;r--;
        bool vis[n];
        memset(vis,0,sizeof vis);
        queue<int>Q;
        Q.push(l);
        Q.push(0);
        vis[l]=true;
        while(!Q.empty())
        {
            int teme=Q.front();
            Q.pop();
            int k=Q.front();Q.pop();
            if(teme==r)
            {
                ans=k;
                break;
            }
            for(auto ax:g[teme])
            {
                if(vis[ax])continue;
                Q.push(ax);
                Q.push(k+1);
                vis[ax]=true;
            }
        }
        if(ans==-1)
        {
            cout<<"impossible"<<endl;
        }
        else
        {
            cout<<ans<<endl;
        }
    }
    return 0;
}


/*
void solve(int n)
{
    if(n<=6)
    {
        vector<int>v;
        for(int i=1;i<=n;i++)
        {
            v.push_back(i);
        }
        do
        {
            int kol=publish(v);
            if(kol==0)
            {
                answer(v);
            }
        }while(next_permutation(v.begin(),v.end()));
    }


   /// publish(order);
   /// answer(order);
}

*/
#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...