QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#153884 | #141. 8 染色 | nhuang685 | Compile Error | / | / | C++20 | 4.2kb | 2023-08-31 09:58:38 | 2023-08-31 09:58:38 |
Judging History
Alice
#include "Bob.h"
#include <cassert>
#include <queue>
namespace {
int sample_variable = 0;
void sample_function() {}
} // namespace
std::vector<int> Bob(int N, int M, std::vector<int> U, std::vector<int> V,
std::vector<int> X) {
std::vector<std::vector<int>> adj(N);
for (int i = 0; i < M; ++i) {
adj[U[i]].push_back(V[i]);
adj[V[i]].push_back(U[i]);
}
std::vector<int> &C = V;
{
{
std::vector<int> &xx = U;
xx.clear();
int cnt = 0;
for (int i = 0; i < N; ++i) {
if ((int)adj[i].size() >= 8) {
// i = cnt;
xx.push_back(X[2 * cnt]);
xx.push_back(X[2 * cnt + 1]);
cnt++;
} else {
xx.push_back(-1);
xx.push_back(-1);
}
}
X = xx;
}
std::vector<std::vector<int>> bp(N);
for (int i = 0; i < N; ++i) {
if ((int)adj[i].size() < 8)
continue;
for (int j : adj[i]) {
if ((int)adj[j].size() < 8)
continue;
if (X[2 * i] != X[2 * j] || X[2 * i + 1] != X[2 * j + 1])
continue;
bp[i].push_back(j);
}
}
std::vector<int> vis = U;
vis.assign(N, 0);
C.assign(N, -1);
for (int s = 0; s < N; ++s) {
if ((int)adj[s].size() >= 8 && !vis[s]) {
vis[s] = true;
std::queue<int> q;
q.push(s);
int b = X[2 * s] * 4 + X[2 * s + 1] * 2;
C[s] = b;
while (!q.empty()) {
int node = q.front();
q.pop();
for (int i : bp[node]) {
if (vis[i])
continue;
vis[i] = true;
C[i] = !(C[node] - b) + b;
q.push(i);
}
}
}
}
}
for (int i = 0; i < N; ++i) {
if (C[i] == -1) {
for (int k = 0; k < 8; ++k) {
bool g = true;
for (int j : adj[i]) {
if (C[j] == k) {
g = false;
break;
}
}
if (g) {
C[i] = k;
break;
}
}
}
}
return C;
}
Bob
#include "Bob.h"
#include <cassert>
#include <queue>
namespace {
int sample_variable = 0;
void sample_function() {}
} // namespace
std::vector<int> Bob(int N, int M, std::vector<int> U, std::vector<int> V,
std::vector<int> X) {
std::vector<std::vector<int>> adj(N);
for (int i = 0; i < M; ++i) {
adj[U[i]].push_back(V[i]);
adj[V[i]].push_back(U[i]);
}
std::vector<int> &C = V;
{
{
std::vector<int> &xx = U;
xx.clear();
int cnt = 0;
for (int i = 0; i < N; ++i) {
if ((int)adj[i].size() >= 8) {
// i = cnt;
xx.push_back(X[2 * cnt]);
xx.push_back(X[2 * cnt + 1]);
cnt++;
} else {
xx.push_back(-1);
xx.push_back(-1);
}
}
X = xx;
}
std::vector<std::vector<int>> bp(N);
for (int i = 0; i < N; ++i) {
if ((int)adj[i].size() < 8)
continue;
for (int j : adj[i]) {
if ((int)adj[j].size() < 8)
continue;
if (X[2 * i] != X[2 * j] || X[2 * i + 1] != X[2 * j + 1])
continue;
bp[i].push_back(j);
}
}
std::vector<int> vis = U;
vis.assign(N, 0);
C.assign(N, -1);
for (int s = 0; s < N; ++s) {
if ((int)adj[s].size() < 8 && !vis[s]) {
vis[s] = true;
std::queue<int> q;
q.push(s);
int b = X[2 * s] * 4 + X[2 * s + 1] * 2;
C[s] = b;
while (!q.empty()) {
int node = q.front();
q.pop();
for (int i : bp[node]) {
if (vis[i])
continue;
vis[i] = true;
C[i] = !(C[node] - b) + b;
q.push(i);
}
}
}
}
}
for (int i = 0; i < N; ++i) {
if (C[i] == -1) {
for (int k = 0; k < 8; ++k) {
bool g = true;
for (int j : adj[i]) {
if (C[j] == k) {
g = false;
break;
}
}
if (g) {
C[i] = k;
break;
}
}
}
}
return C;
}
详细
/usr/bin/ld: /tmp/cc8Q9ZIb.o: in function `main': grader_Alice.cpp:(.text.startup+0x143): undefined reference to `Alice(int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)' collect2: error: ld returned 1 exit status