제출 #579684

#제출 시각아이디문제언어결과실행 시간메모리
579684jasminEvent Hopping (BOI22_events)C++17
0 / 100
144 ms22984 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long

const int inf=1e18;

int dijkstra(int start, int ende, vector<vector<int> >& adi, int n){
    vector<int> dist(n, inf);
    vector<bool> vis(n);
    priority_queue<pair<int,int> > pq;
    dist[start]=0;
    pq.push({0, start});

    while(!pq.empty()){
        int v=pq.top().second;
        pq.pop();

        if(vis[v]) continue;
        vis[v]=true;

        for(auto u: adi[v]){
            if(dist[v]+1<dist[u]){
                dist[u]=dist[v]+1;
                pq.push({-dist[u], u});
            }
        }
    }
    return dist[ende];
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, q;
    cin >> n >> q;
    vector<pair<int,int> > e(n);
    map<int, pair<vector<int>, vector<int> > > time;
    for(int i=0; i<n; i++){
        int s, t;
        cin>> s >> t;
        e[i]={s, t};
        time[s].first.push_back(i);
        time[t].second.push_back(i);
    }

    vector<vector<int> > adi(n);
    set<int> active;
    for(auto m: time){
        for(auto e: m.second.first){
            active.insert(e);
        }
        
        for(auto e: m.second.second){
            for(auto x: active){
                adi[e].push_back(x);
            }
        }
        for(auto e: m.second.second){
            active.erase(e);
        }
    }

    cout << "impossible\n";
    return 0;

    vector<vector<int> > dist(n, vector<int> (n, inf));
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            dist[i][j]=dijkstra(i, j, adi, n);
        }
    }
    
    for(int i=0; i<q; i++){
        int s, e;
        cin >> s >> e;
        int ans=dist[s-1][e-1];
        if(ans==inf){
            cout << "impossible\n";
        }
        else{
            cout << ans << "\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...