#include <deque>
#include <vector>
#include <bitset>
constexpr int N = 1500;
int n{};
std::vector<std::bitset<N>> edges;
void initialize(int _n) {
n = _n;
edges.assign(n, {});
for (int i = 0; i < n; ++i) {
edges[i] = ~edges[i];
}
}
int hasEdge(int u, int v) {
edges[u][v] = edges[v][u] = false;
std::deque<int> queue;
std::bitset<N> visited;
int count = 0;
queue.push_back(u), visited[u] = true, ++count;
while (not queue.empty()) {
int cur = queue.front(); queue.pop_front();
if ((edges[cur] & ~visited).any()) {
for (int nxt = 0; nxt < n; ++nxt) {
if (edges[cur][nxt] and not visited[nxt]) {
queue.push_back(nxt), visited[nxt] = true, ++count;
}
}
}
}
if (count != n) {
edges[u][v] = edges[v][u] = true;
}
return edges[u][v];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |