QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#153884#141. 8 染色nhuang685Compile Error//C++204.2kb2023-08-31 09:58:382023-08-31 09:58:38

Judging History

你现在查看的是最新测评结果

  • [2023-08-31 09:58:38]
  • 评测
  • [2023-08-31 09:58:38]
  • 提交

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;
}

Details

/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