Submission #1175744

#TimeUsernameProblemLanguageResultExecution timeMemory
1175744MuhammetSwapping Cities (APIO20_swap)C++17
Compilation error
0 ms0 KiB
#include "bits/stdc++.h"
#include "swap.h"
#include "grader.cpp"

using namespace std;

const int N = 3e5 + 5;

int p[N], a[N], c[N], h[N], par[N], sp[N][30];

vector <int> v[N];

int fnd(int x) {
    if(p[x] == x) return x;
    return p[x] = fnd(p[x]);
}

void dfs(int x, int y) {
    h[x] = h[y] + 1;
    par[x] = y;
    for(auto i : v[x]) {
        dfs(i, x);
    }
}

int lca(int x, int y) {
    if(h[x] < h[y]) swap(x, y);
    for(int i = 29; i >= 0; i--) {
        if(h[sp[x][i]] >= h[y]) x = sp[x][i];
    }
    if(x == y) return x;
    for(int i = 29; i >= 0; i--) {
        if(sp[x][i] != sp[y][i]) x = sp[x][i], y = sp[y][i];
    }
    return par[x];
}

void init(int n, int m, vector<int> U1, vector<int> U2, vector<int> W) {
    vector <pair <int, pair <int, int>>> v1;
    for(int i = 0; i < m; i++) {
        v1.push_back({W[i], {U1[i], U2[i]}});
    }
    sort(v1.begin(), v1.end());
    for(int i = 0; i <= n + m; i++) {
        p[i] = i;
    }
    int u3 = n-1;
    for(auto [w, u] : v1) {
        auto [u1, u2] = u;
        u1 = fnd(u1), u2 = fnd(u2);
        u3++;
        p[u1] = p[u2] = u3;
        c[u3] = w;
        if(u1 != u2) {
            if(a[u1] or a[u2]) a[u3] = true;
            v[u3].push_back(u1);
            v[u3].push_back(u2);
        }
        else {
            a[u3] = true;
            v[u3].push_back(u1);
        }
    }
    dfs(u3, 0);
    for(int i = 0; i < n + m; i++) {
        sp[i][0] = par[i];
    }
    for(int j = 1; j < 30; j++) {
        for(int i = 0; i < n + m; i++) {
            sp[i][j] = sp[sp[i][j-1]][j-1];
        }
    }
    a[0] = 1;
    return;
}

int getMinimumFuelCapacity(int x, int y) {
    int z = lca(x, y);
    if(a[z]) return c[z];
    for(int i = 29; i >= 0; i--) {
        if(!a[sp[z][i]]) z = sp[z][i];
    }
    if(a[par[z]] and par[z]) return c[par[z]];
    return -1;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cckPgM9L.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccY3grMd.o:swap.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status