제출 #1158391

#제출 시각아이디문제언어결과실행 시간메모리
1158391The_Samurai게임 (APIO22_game)C++20
0 / 100
0 ms408 KiB
#include "game.h"
#include "bits/stdc++.h"
using namespace std;
const int inf = 1e9;

int n, k;
vector<vector<int>> g;
vector<int> start;
queue<int> q;

void init(int _n, int _k) {
    n = _n, k = _k;
    start = vector(n, -inf);
    for (int i = 0; i < k; i++) start[i] = i;
    g.assign(n, vector<int>());
}

int add_teleporter(int u, int v) {
    if (u == v and u < k) return 1;
    if (u == v) return 0;
    g[u].emplace_back(v);
    if (v < k and v <= start[u]) return 1;
    // if (start[u] <= start[v]) return 0;
    q.push(v);
    vector<bool> vis(n); vis[u] = true;
    while (!q.empty()) {
        int v = q.front(); q.pop();
        vis[v] = true;
        // cout << u << ' ' << v << ' ' << start[u] << endl;
        start[v] = max(start[v], start[u]);
        if (v < k and v <= start[u]) return 1;
        for (int x: g[v]) { // mb tl
            if (vis[x]) continue;
            // if (x < k and x <= start[u]) return 1;
            if (start[x] <= start[u]) q.push(x);
        }
    }
    
    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...