Submission #1333016

#TimeUsernameProblemLanguageResultExecution timeMemory
1333016SpyrosAlivBoardgames (CEOI25_boardgames)C++20
0 / 100
2094 ms3616 KiB
#include "boardgames.h"
#include <bits/stdc++.h>
using namespace std;

const int MN = 1e5+5;

int n, m;
vector<pair<int, int>> edges;
int banned = -1;
int par[MN], sz[MN];

int find(int u) {
    if (par[u] == u) return u;
    return par[u] = find(par[u]);
}

void merge(int u, int v) {
    u = find(u);
    v = find(v);
    if (u == v) return;
    if (sz[u] > sz[v]) swap(u, v);
    par[u] = v;
    sz[v] += sz[u];
}

void get_comps() {
    for (int i = 0; i < n; i++) {
        par[i] = i;
        sz[i] = 1;
    }
    for (auto [u, v]: edges) {
        if (banned >= u) continue;
        merge(u, v);
    }
}

vector<int> partition_players(int N, int M, vector<int> X, vector<int> Y)
{
    n = N;
    m = M;
    for (int i = 0; i < m; i++) {
        edges.push_back({X[i], Y[i]});
    }
    sort(edges.begin(), edges.end());
    get_comps();
    vector<int> act;
    for (int i = 1; i < n; i++) {
        if (find(i) == find(i-1)) {
            continue;
        }
        act.push_back(i - banned - 1);
        banned = i-1;
        get_comps();
    }
    act.push_back(n - banned - 1);
    return act;
}
/*
int main()
{
    int N, M;
    assert(2 == scanf("%d %d", &N, &M));

    std::vector<int> X(M), Y(M);

    for (int i = 0; i < M; i++)
    {
        assert(2 == scanf("%d %d", &X[i], &Y[i]));
    }
    fclose(stdin);

    std::vector<int> K = partition_players(N, M, X, Y);

    int g = static_cast<int>(K.size());
    printf("%d\n", g);
    for (int i = 0; i < g; i++)
    {
        printf(i == 0 ? "%d" : " %d", K[i]);
    }
    printf("\n");
    fclose(stdout);
    return 0;
}
*/
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...