Submission #740472

#TimeUsernameProblemLanguageResultExecution timeMemory
740472KenjikrabGame (APIO22_game)C++17
2 / 100
4062 ms8528 KiB
#include "game.h"
#include<bits/stdc++.h>
using namespace std;
int const n_max=3e5+10;
int N,K;
bitset<n_max> visited;
vector<int> len(n_max,INT_MAX);
vector<int> node[n_max];
void init(int n, int k)
{
    N=n;
    K=k;
    for(int i=0;i<k;i++)
    {
        visited[i]=true;
        len[i]=i;
    }
}

int add_teleporter(int u, int v)
{
    if(visited[u])
    {
        if(v<K&&len[u]>=v)return 1;
        queue<int> q;
        if(!visited[v]||len[v]<len[u])q.push(v);
        visited[v]=true;
        while(!q.empty())
        {
            int cur=q.front();
            len[cur]=len[u];
            q.pop();
            for(auto nxt:node[cur])
            {
                if(nxt<K&&len[cur]>=nxt)return 1;
                if(!visited[nxt]||len[nxt]<len[cur])
                {
                    q.push(nxt);
                }
            }
        }
    }
    else node[u].push_back(v);
    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...