답안 #589035

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
589035 2022-07-04T08:58:10 Z radal Event Hopping (BOI22_events) C++17
10 / 100
210 ms 34056 KB
#include <bits/stdc++.h>
//#pragma GCC target("sse,sse2,sse4,avx2")
//#pragma GCC optimize("unroll-loops,O2")
#define rep(i,l,r) for (int i = l; i < r; i++)
#define repr(i,r,l) for (int i = r; i >= l; i--)
#define X first
#define Y second
#define all(x) (x).begin() , (x).end()
#define pb push_back
#define endl '\n'
#define debug(x) cerr << #x << " : " << x << endl;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pll;
constexpr int N = 1e5+10,mod = 1e9+7,inf = 1e9+10,sq = 90;
inline int mkay(int a,int b){
    if (a+b >= mod) return a+b-mod;
    if (a+b < 0) return a+b+mod;
    return a+b;
}
 
inline int poww(int a,int k){
    if (k < 0) return 0;
    int z = 1;
    while (k){
        if (k&1) z = 1ll*z*a%mod;
        a = 1ll*a*a%mod;
        k >>= 1;
    } 
    return z; 
}
int nxt[N][20];
pll a[N];
int par[N],d[N];
vector<int> adj[N];
map<int,vector<int>> st,en;
void bfs(int v){
    par[v] = v;
    d[v] = 0;
    queue<int> q;
    q.push(v);
    while (!q.empty()){
        int u = q.front();
        q.pop();
        for (int w : adj[u]){
            if (par[w] == -1){
                par[w] = v;
                d[w] = d[u]+1;
                q.push(w);
            }
        }
    }
}
int main(){
    ios :: sync_with_stdio(0); cin.tie(0);
    int n,q;
    cin >> n >> q;
    vector<int> ve;
    rep(i,1,n+1){
        cin >> a[i].X >> a[i].Y;
        ve.pb(a[i].X);
        ve.pb(a[i].Y);
        st[a[i].X].pb(i);
        en[a[i].Y].pb(i);
    }
    set<int> cur;
    sort(all(ve));
    int perv = -1;
    for (int u : ve){
        if (u == perv) continue;
        perv = u;
        for (int i : st[u]) cur.insert(i);
        for (int i : en[u]){
            for (int j : cur){
                adj[i].pb(j);
            }
        }
        for (int i : en[u]) cur.erase(i);
    }
    if (n <= 1000 && q <= 100){
        rep(i,0,q){
            int s,e;
            cin >> s >> e;
            if (s == e){
                cout << 0 << endl;
                continue;
            }
            if (a[s].Y == a[e].Y){
                cout << 1 << endl;
                continue;
            }
            rep(i,1,n+1) par[i] = -1;
            bfs(s);
            if (par[e] == -1) cout << "impossible" << endl;
            else cout << d[e] << endl;
            continue;
        }
    }
    else{
        memset(par,-1,sizeof par);
        rep(i,1,n+1) if (par[i] == -1) bfs(i);
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Incorrect 210 ms 30012 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Correct 1 ms 2644 KB Output is correct
3 Correct 4 ms 2900 KB Output is correct
4 Correct 3 ms 2900 KB Output is correct
5 Correct 4 ms 2964 KB Output is correct
6 Correct 9 ms 3668 KB Output is correct
7 Correct 20 ms 4656 KB Output is correct
8 Correct 22 ms 5696 KB Output is correct
9 Correct 12 ms 6668 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Correct 1 ms 2644 KB Output is correct
3 Correct 4 ms 2900 KB Output is correct
4 Correct 3 ms 2900 KB Output is correct
5 Correct 4 ms 2964 KB Output is correct
6 Correct 9 ms 3668 KB Output is correct
7 Correct 20 ms 4656 KB Output is correct
8 Correct 22 ms 5696 KB Output is correct
9 Correct 12 ms 6668 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 1 ms 2644 KB Output is correct
12 Correct 5 ms 2900 KB Output is correct
13 Correct 3 ms 2900 KB Output is correct
14 Correct 3 ms 2900 KB Output is correct
15 Correct 7 ms 3668 KB Output is correct
16 Correct 19 ms 4732 KB Output is correct
17 Correct 21 ms 5788 KB Output is correct
18 Correct 10 ms 6740 KB Output is correct
19 Incorrect 83 ms 34056 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Correct 1 ms 2644 KB Output is correct
3 Correct 4 ms 2900 KB Output is correct
4 Correct 3 ms 2900 KB Output is correct
5 Correct 4 ms 2964 KB Output is correct
6 Correct 9 ms 3668 KB Output is correct
7 Correct 20 ms 4656 KB Output is correct
8 Correct 22 ms 5696 KB Output is correct
9 Correct 12 ms 6668 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 2 ms 2644 KB Output is correct
12 Correct 4 ms 2900 KB Output is correct
13 Correct 3 ms 2900 KB Output is correct
14 Correct 4 ms 2900 KB Output is correct
15 Correct 7 ms 3644 KB Output is correct
16 Correct 19 ms 4692 KB Output is correct
17 Correct 21 ms 5716 KB Output is correct
18 Correct 10 ms 6740 KB Output is correct
19 Incorrect 185 ms 30044 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 200 ms 29948 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Incorrect 210 ms 30012 KB Output isn't correct
3 Halted 0 ms 0 KB -