#include "sphinx.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
using vi = vector<int>;
using vl = vector<ll>;
using vvi = vector<vi>;
using vvl = vector<vl>;
int N, M;
vvi adj;
vi G;
int queryTwo(int a, int b, int colourA, int colourB) {
vi E(N, N);
E[a] = colourA;
E[b] = colourB;
return perform_experiment(E);
return 0;
}
int findColour(int a) {
if (G[a] != -1) return G[a];
int neighbour = adj[a][0];
int CCs = queryTwo(a, neighbour, -1, -1);
for (int colour = 0; colour < N; colour++) {
int x1 = queryTwo(a, neighbour, colour, -1);
int x2 = queryTwo(a, neighbour, -1, colour);
if (CCs == 1 && x1 == 1) {
G[a] = G[neighbour] = colour;
break;
} else if (x1 == 1) {
G[neighbour] = colour;
} else if (x2 == 1) {
G[a] = colour;
}
}
return G[a];
}
vi find_colours(int _N, vi X, vi Y) {
N = _N, M = (int) X.size();
adj.assign(N, vi());
for (int i = 0; i < M; i++) {
adj[X[i]].push_back(Y[i]);
adj[Y[i]].push_back(X[i]);
}
G.assign(N, -1);
// int CCs = perform_experiment(vi(N, -1));
if (N == 2) { // 3/100 pts
for (int colour = 0; colour < N; colour++) {
findColour(0);
}
return G;
}
if (N <= 50) {
return G;
}
return G;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |