Submission #864155

# Submission time Handle Problem Language Result Execution time Memory
864155 2023-10-22T07:35:17 Z danikoynov Event Hopping (BOI22_events) C++14
0 / 100
1500 ms 101036 KB
#include<bits/stdc++.h>
#define debug true
#ifdef DEVAL 
    #define debug false
#endif

using namespace std;

const int maxn = 1e5 + 10;

struct interval
{
    int s, e;
}seg[maxn];

int n, q;   
pair < int, int > task[maxn];
void read()
{
    cin >> n >> q;
    for (int i = 1; i <= n; i ++)
    {
        cin >> seg[i].s >> seg[i].e;
    }
    for (int i = 1; i <= q; i ++)
    {
        cin >> task[i].first >> task[i].second;
    }
}


vector < int > adj[maxn];

int used[maxn], dist[5010][5010];
int nxt[5010][5010];
int my_queue[maxn];
void bfs(int start)
{
    for (int i = 1; i <= n; i ++)
        used[i] = -1;

    used[start] = 0;
    int st = 1, en = 0;
    my_queue[++ en]  = start;
    while(st <= en)
    {
        int v = my_queue[st ++];
        int u = nxt[v][0];
        while(u <= n)
        {
            if (used[u] == - 1)
            {
                used[u] = used[v] + 1;
                my_queue[++ en] = u;
            }
            u = nxt[v][u];
            assert(u > 1 && u <= n);
            
        }
    }
}

void build_graph()
{
    for (int i = 1; i <= n; i ++)
    {
        for (int j = 0; j <= n; j ++)
            nxt[i][j] = n + 1;
        int last = 0;
        for (int j = 1; j <= n; j ++)
        {
            if (seg[j].s <= seg[i].e && seg[i].e <= seg[j].e)
                nxt[i][last] = j, last = j;
        }
    }
}

void answer_queries()
{
    for (int i = 1; i <= q; i ++)
    {
        if (dist[task[i].first][task[i].second] == -1)
            cout << "impossible" << endl;
        else
            cout << dist[task[i].first][task[i].second] << endl;

    }
}

void precalc()
{
    for (int v = 1; v <= n; v ++)
    {
        bfs(v);
        for (int i = 1; i <= n; i ++)
            dist[v][i] = used[i];
    }
}

void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}

void solve()
{

    read();
    build_graph();
    precalc();
    answer_queries();    
}

int main()
{
    speed();
    solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 13916 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 13916 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 13916 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 13916 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1557 ms 101036 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 13916 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -