Submission #1241885

#TimeUsernameProblemLanguageResultExecution timeMemory
1241885AccountSphinx's Riddle (IOI24_sphinx)C++20
0 / 100
0 ms412 KiB
#include <bits/stdc++.h>
using namespace std;

int N; 
vector<int> C; 
vector<vector<int>> adj; 
int calls_cnt = 0;
const int CALLS_CNT_LIMIT = 2750;

int count_components(const vector<int>& S) {
    int components_cnt = 0;
    vector<bool> vis(N, false);
    for (int i = 0; i < N; i++) {
        if (vis[i]) continue;
        components_cnt++;
        queue<int> q;
        q.push(i);
        vis[i] = true;
        while (!q.empty()) {
            int cur = q.front(); q.pop();
            for (int nxt : adj[cur]) {
                if (!vis[nxt] && S[nxt] == S[cur]) {
                    vis[nxt] = true;
                    q.push(nxt);
                }
            }
        }
    }
    return components_cnt;
}

int perform_experiment(const vector<int>& E) {
    calls_cnt++;
    if (calls_cnt > CALLS_CNT_LIMIT) {
        cerr << "Error: Se excedió el límite de llamadas a perform_experiment" << endl;
        exit(1);
    }

    if ((int)E.size() != N) {
        cerr << "Error: Tamaño inválido del arreglo E" << endl;
        exit(1);
    }

    for (int i = 0; i < N; i++) {
        if (E[i] < -1 || E[i] > N) {
            cerr << "Error: Valor inválido en E[" << i << "] = " << E[i] << endl;
            exit(1);
        }
    }

    vector<int> S(N);
    for (int i = 0; i < N; i++) {
        S[i] = (E[i] == -1 ? C[i] : E[i]);
    }

    return count_components(S);
}

vector<int> find_colours(int N, vector<int> X, vector<int> Y){
    vector<int> v(N, -1);
    vector<int> r(N);
    for(int i = 0; i < N; ++i){
        for(int j = 0; j < N; ++j){
            v.assign(N, j);
            v[i] = -1;
            if(perform_experiment(v) == 1){
                r[i] = j;
                break;
            } 
        }
    }
    return r;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...