Submission #589388

# Submission time Handle Problem Language Result Execution time Memory
589388 2022-07-04T14:29:48 Z TheScrasse Parachute rings (IOI12_rings) C++17
52 / 100
1642 ms 262144 KB
#include <bits/stdc++.h>
using namespace std;

#define nl "\n"
#define nf endl
#define ll int
#define pb push_back
#define _ << ' ' <<

#define INF (ll)1e9
#define mod 998244353
#define maxn 1000010

ll i, i1, j, k, k1, t, n, m, res, flag[10], a, b;
ll ms[5], status;
vector<array<ll, 2>> el;

struct graph {
    ll dg[maxn], cn3, cyc, pr[maxn], sz[maxn];
    vector<ll> adj[maxn];

    graph() {
        ll i;
        for (i = 1; i <= n; i++) {
            dg[i] = 0; pr[i] = i; sz[i] = 1;
        }
        cn3 = 0; cyc = 0;
    }

    ll find(ll x) {
        if (x == pr[x]) return x;
        return pr[x] = find(pr[x]);
    }

    bool same(ll a, ll b) {
        return (find(a) == find(b));
    }

    void onion(ll a, ll b) {
        a = find(a); b = find(b);
        if (a == b) {
            cyc++; res = sz[a]; return;
        }
        if (sz[a] < sz[b]) swap(a, b);
        pr[b] = a; sz[a] += sz[b];
    }

    void upd(ll p, ll x) {
        cn3 -= (dg[p] >= 3);
        dg[p] += x;
        cn3 += (dg[p] >= 3);
    }
};

vector<graph> gr;

void ins(ll p, ll a, ll b) {
    if (ms[p] == a || ms[p] == b) return;
    gr[p].upd(a, 1); gr[p].upd(b, 1);
    gr[p].adj[a].pb(b); gr[p].adj[b].pb(a);
    gr[p].onion(a, b);
}

void Init(int N_) {
    n = N_;
    gr.resize(5);
    // gr[0] = graph(); gr[1] = graph(); gr[2] = graph(); gr[3] = graph(); gr[4] = graph();
}

void Link(int A, int B) {
    a = A + 1; b = B + 1;
    el.pb({a, b});
    if (status == 0) ins(0, a, b);
    else if (status == 2) ins(1, a, b);
    else for (i = 0; i <= 4; i++) ins(i, a, b);

    if (status == 0) {
        if (gr[0].dg[b] >= 3) swap(a, b);
        if (gr[0].dg[a] >= 3) {
            status = 1;
            ms[1] = a; ms[2] = gr[0].adj[a][0]; ms[3] = gr[0].adj[a][1]; ms[4] = gr[0].adj[a][2];
            gr.resize(1);
            gr.resize(5);
            // gr[1] = graph(); gr[2] = graph(); gr[3] = graph(); gr[4] = graph();
            for (auto [x, y] : el) {
                for (i = 1; i <= 4; i++) ins(i, x, y);
            }
        }
    }

    if (gr[0].dg[a] == 4 || gr[0].dg[b] == 4) status = 2;
}

int CountCritical() {
    // cout << "status =" _ status _ gr[0].cyc << nl;

    if (status == 0) {
        if (gr[0].cyc == 0) return n;
        if (gr[0].cyc == 1) return res;
        return 0;
    }

    res = 0;
    for (i = 1; i <= 4; i++) {
        if (gr[i].cyc + gr[i].cn3 == 0) res++;
    }
    return res;
}
# Verdict Execution time Memory Grader output
1 Correct 54 ms 117836 KB Output is correct
2 Correct 72 ms 118764 KB Output is correct
3 Correct 71 ms 118536 KB Output is correct
4 Correct 56 ms 117928 KB Output is correct
5 Correct 53 ms 118076 KB Output is correct
6 Correct 56 ms 118400 KB Output is correct
7 Correct 71 ms 118272 KB Output is correct
8 Correct 55 ms 118272 KB Output is correct
9 Correct 81 ms 119008 KB Output is correct
10 Correct 84 ms 118968 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 449 ms 170404 KB Output is correct
2 Correct 1642 ms 257304 KB Output is correct
3 Correct 1008 ms 214908 KB Output is correct
4 Correct 1043 ms 216436 KB Output is correct
5 Correct 994 ms 216472 KB Output is correct
6 Correct 979 ms 214800 KB Output is correct
7 Correct 994 ms 216276 KB Output is correct
8 Runtime error 1074 ms 262144 KB Execution killed with signal 9
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 54 ms 117836 KB Output is correct
2 Correct 72 ms 118764 KB Output is correct
3 Correct 71 ms 118536 KB Output is correct
4 Correct 56 ms 117928 KB Output is correct
5 Correct 53 ms 118076 KB Output is correct
6 Correct 56 ms 118400 KB Output is correct
7 Correct 71 ms 118272 KB Output is correct
8 Correct 55 ms 118272 KB Output is correct
9 Correct 81 ms 119008 KB Output is correct
10 Correct 84 ms 118968 KB Output is correct
11 Correct 81 ms 118980 KB Output is correct
12 Correct 85 ms 120100 KB Output is correct
13 Correct 83 ms 119988 KB Output is correct
14 Correct 77 ms 118668 KB Output is correct
15 Correct 74 ms 119252 KB Output is correct
16 Correct 63 ms 119008 KB Output is correct
17 Correct 86 ms 120140 KB Output is correct
18 Correct 82 ms 119992 KB Output is correct
19 Correct 58 ms 118996 KB Output is correct
20 Correct 83 ms 120140 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 54 ms 117836 KB Output is correct
2 Correct 72 ms 118764 KB Output is correct
3 Correct 71 ms 118536 KB Output is correct
4 Correct 56 ms 117928 KB Output is correct
5 Correct 53 ms 118076 KB Output is correct
6 Correct 56 ms 118400 KB Output is correct
7 Correct 71 ms 118272 KB Output is correct
8 Correct 55 ms 118272 KB Output is correct
9 Correct 81 ms 119008 KB Output is correct
10 Correct 84 ms 118968 KB Output is correct
11 Correct 81 ms 118980 KB Output is correct
12 Correct 85 ms 120100 KB Output is correct
13 Correct 83 ms 119988 KB Output is correct
14 Correct 77 ms 118668 KB Output is correct
15 Correct 74 ms 119252 KB Output is correct
16 Correct 63 ms 119008 KB Output is correct
17 Correct 86 ms 120140 KB Output is correct
18 Correct 82 ms 119992 KB Output is correct
19 Correct 58 ms 118996 KB Output is correct
20 Correct 83 ms 120140 KB Output is correct
21 Correct 69 ms 122148 KB Output is correct
22 Correct 82 ms 125020 KB Output is correct
23 Correct 93 ms 126852 KB Output is correct
24 Correct 123 ms 125788 KB Output is correct
25 Correct 92 ms 124184 KB Output is correct
26 Correct 107 ms 126864 KB Output is correct
27 Correct 90 ms 126816 KB Output is correct
28 Correct 302 ms 138172 KB Output is correct
29 Correct 113 ms 127516 KB Output is correct
30 Correct 101 ms 128200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 54 ms 117836 KB Output is correct
2 Correct 72 ms 118764 KB Output is correct
3 Correct 71 ms 118536 KB Output is correct
4 Correct 56 ms 117928 KB Output is correct
5 Correct 53 ms 118076 KB Output is correct
6 Correct 56 ms 118400 KB Output is correct
7 Correct 71 ms 118272 KB Output is correct
8 Correct 55 ms 118272 KB Output is correct
9 Correct 81 ms 119008 KB Output is correct
10 Correct 84 ms 118968 KB Output is correct
11 Correct 449 ms 170404 KB Output is correct
12 Correct 1642 ms 257304 KB Output is correct
13 Correct 1008 ms 214908 KB Output is correct
14 Correct 1043 ms 216436 KB Output is correct
15 Correct 994 ms 216472 KB Output is correct
16 Correct 979 ms 214800 KB Output is correct
17 Correct 994 ms 216276 KB Output is correct
18 Runtime error 1074 ms 262144 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -