Submission #1021385

# Submission time Handle Problem Language Result Execution time Memory
1021385 2024-07-12T17:26:21 Z Wael Fountain Parks (IOI21_parks) C++17
0 / 100
5 ms 9816 KB
#include "parks.h"
//#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;

struct DSU {
    int n, cnt;
    vector<int> f, sz;
    DSU(int n) : n(n), cnt(n) {
        f.resize(n);
        iota(f.begin(), f.end(), 0);
        sz.resize(n, 1);
    }

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

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

    bool same(int u, int v) {
        return find(u) == find(v);
    }
};

int construct_roads(vector<int> x, vector<int> y) {
    int n = x.size();

    int N = 2e5;
    vector<map<int, int>> id(N + 1);

    for (int i = 0; i < n; ++i) {
        id[x[i]][y[i]] = i;
    }

    DSU dsu(n);
    vector<int> u, v, a, b;
    for (int i = 0; i < n; ++i) {
        if (id[x[i]].count(y[i] + 2)) {
            int j = id[x[i]][y[i] + 2];
            dsu.merge(i, j);
            u.push_back(i);
            v.push_back(j);
            if (x[i] == 4) {
                a.push_back(x[i] + 1);
                b.push_back(y[i] + 1);
            } else {
                a.push_back(x[i] - 1);
                b.push_back(y[i] + 1);
            }
        }

        if (x[i] == 2 && id[x[i] + 2].count(y[i])) {
            int j = id[x[i + 2]][y[i]];
            if (dsu.same(i, j) == 0) {
                dsu.merge(i, j);
                u.push_back(i);
                v.push_back(j);
                a.push_back(x[i] + 1);
                b.push_back(y[i] + 1);
            } 
        }
    }

    if (dsu.cnt == n - 1) {
        build(u, v, a, b);
        return 1;
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9816 KB Solution announced impossible, but it is possible.
2 Halted 0 ms 0 KB -