Submission #1202557

#TimeUsernameProblemLanguageResultExecution timeMemory
1202557trashaccountGame (APIO22_game)C++20
0 / 100
1 ms1088 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; const int NM = 3e4, KM = 1000; int n, k; vector <int> adj[NM+5]; int timer, num[NM+5], low[NM+5], comp, scc[NM+5], sz[NM+5]; stack <int> st; void init(int _n, int _k){ n = _n, k = _k; for (int i = 0; i < n; i++) adj[i].clear(); for (int i = 0; i+1 < k; i++) adj[i].push_back(i+1); } void dfs(int u){ num[u] = low[u] = ++timer; st.push(u); for (int v : adj[u]){ if (v == u) continue; if (scc[v] > 0) continue; if (num[v] > 0){ low[u] = min(low[u], num[v]); } else{ dfs(v); low[u] = min(low[u], low[v]); } } if (low[u] == num[u]){ comp++; sz[comp] = 0; int v = -1; while (v != u){ v = st.top(); st.pop(); scc[v] = comp; sz[comp]++; } } } int add_teleporter(int u, int v){ adj[u].push_back(v); if (u == v && u < k) return 1; for (int i = 0; i < n; i++) num[i] = low[i] = scc[i] = 0; timer = 0; comp = 0; for (int i = 0; i < n; i++){ if (num[i] > 0) continue; dfs(i); } for (int i = 0; i < k; i++){ if (sz[scc[i]] > 1) 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...