#include "game.h"
#include <bits/stdc++.h>
#define maxn 300005
using namespace std;
int N, K, num[maxn], low[maxn], id = 0, slt, sz[maxn], lt[maxn], cl[maxn], degenerate = 0;
vector<int> adj[maxn], Stack;
void init(int n, int k) {
    N = n; K = k;
    for (int i = 0; i < k-1; i++) adj[i].emplace_back(i+1);
}
void dfs(int u) {
    cl[u] = 1;
    num[u] = low[u] = ++id;
    Stack.emplace_back(u);
    for (int v : adj[u])
    if (cl[v] == 0) {
        dfs(v);
        low[u] = min(low[u], low[v]);
    } else if (cl[v] == 1) low[u] = min(low[u], num[v]);
    if (num[u] == low[u]) {
        int v;
        sz[++slt] = 0;
        do {
            v = Stack.back();
            cl[v] = 2;
            lt[v] = slt;
            ++sz[slt];
            Stack.pop_back();
        } while (v != u);
    }
}
int add_teleporter(int u, int v) {
    if (degenerate) return 1;
    if (u == v && u < K) return degenerate = 1;
    adj[u].emplace_back(v);
    for (int i = 0; i < N; i++) cl[i] = 0;
    id = slt = 0;
    for (int i = 0; i < N; i++)
        if (!cl[i]) dfs(i);
    for (int i = 0; i < K; i++) if (sz[lt[i]] > 1) return 1;
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |