#include "Alicelib.h"
#include <bits/stdc++.h>
using namespace std;
using pint = pair<int, int>;
void Alice(int N, int M, int A[], int B[]) {
vector<pint> edges{{N + 10, N + 11}};
while (M--) edges.emplace_back(A[M], B[M]);
for (int i = 0, idx = 0; i < N; ++i) {
while (__builtin_popcount(++idx) < 2);
for (int j = 10; j--;) {
if ((idx >> j) & 1) edges.emplace_back(i, N + j);
}
}
for (int i = 10; i--;) edges.emplace_back(N + i, N + 10);
for (int i = 10; --i;) edges.emplace_back(N + i - 1, N + i);
InitG(N + 12, edges.size());
for (int i = edges.size(); i--;) MakeG(i, edges[i].first, edges[i].second);
}
#include "Boblib.h"
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
using pint = pair<int, int>;
set<int> adj[1012];
void Bob(int V, int U, int C[], int D[]) {
bool ban[V]{};
while (U--) {
adj[C[U]].emplace(D[U]);
adj[D[U]].emplace(C[U]);
}
set<int> raw;
for (int i = V; i--;) {
if (adj[i].size() > 1) continue;
raw = adj[*adj[i].begin()];
raw.erase(i);
ban[*adj[i].begin()] = ban[i] = true;
for (int j: raw) ban[j] = true;
}
vector<int> order;
for (int i: raw) {
int cnt = 0;
for (int j: raw) cnt += adj[i].count(j);
if (cnt > 1) continue;
order = {i};
raw.erase(i);
while (order.size() < 10) {
for (int j: raw) {
if (not adj[order.back()].count(j)) continue;
order.emplace_back(j);
raw.erase(j);
break;
}
}
break;
}
int idx[1 << 10]{};
for (int i = 0, j = 0; ++i <= V - 12;) {
while (__builtin_popcount(++j) < 2);
j[idx] = i;
}
if (false) rev: reverse(all(order));
int real[V];
for (int i = V; i--;) {
if (ban[i]) continue;
int x = 0;
for (int j = 10; j--;) x |= adj[i].count(order[j]) << j;
if (not idx[x] or (real[i] = idx[x] - 1) >= V - 12) goto rev;
}
vector<pint> edges;
for (int i = V; i--;) {
if (ban[i]) continue;
for (int j: adj[i]) {
if (not ban[j] and j < i) edges.emplace_back(real[i], real[j]);
}
}
InitMap(V - 12, edges.size());
for (auto [a, b]: edges) MakeMap(a, b);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |