Submission #726924

#TimeUsernameProblemLanguageResultExecution timeMemory
726924vjudge1Game (APIO22_game)C++17
30 / 100
4094 ms9852 KiB
#include <bits/stdc++.h>
using namespace std;
#include "game.h"

using Bitset = bitset<1000>;
int N, K;
Bitset reachable[300000];

void init(int n, int k) {
        N = n, K = k;
}

vector<int> adj[300000];
int vis[300000];
int f[300000];
int timer = 0;

int DP(int u) {
        if (vis[u] == timer) return f[u];
        vis[u] = timer;
        f[u] = 1e9;
        for (int v : adj[u]) {
                if (v < K) {
                        f[u] = min(v, f[u]);
                } else {
                        f[u] = min(f[u], DP(v));
                }
        }
        return f[u];
}

int add_teleporter(int u, int v) {
        ++timer;
        adj[u].emplace_back(v);
        for (int i = 0; i < K; i++) {
                if (DP(i) <= i) return 1;
        }
        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...