답안 #1106471

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1106471 2024-10-30T12:21:29 Z vladilius 자매 도시 (APIO20_swap) C++17
0 / 100
440 ms 524288 KB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define pb push_back
#define ff first
#define ss second
#define arr3 array<int, 3>

struct dsu{
    vector<int> p, d;
    vector<bool> f;
    vector<vector<int>> A, out;
    int n;
    void init(int ns){
        n = ns;
        d.resize(n + 1);
        p.resize(n + 1);
        f.resize(n + 1);
        A.resize(n + 1);
        out.resize(n + 1);
        for (int i = 1; i <= n; i++){
            out[i].assign(n + 1, -1);
            p[i] = i;
            A[i] = {i};
        }
    }
    int get(int v){
        if (p[v] != v){
            p[v] = get(p[v]);
        }
        return p[v];
    }
    void unite(int x, int y, int w){
        int a = get(x), b = get(y);
        if (a == b){
            if (!f[a]){
                f[a] = 1;
                for (int i: A[a]){
                    for (int j: A[a]){
                        assert(out[i][j] == -1);
                        out[i][j] = w;
                    }
                }
            }
            return;
        }
        if (A[a].size() > A[b].size()) swap(a, b);
        
        if (f[a] || f[b] || d[x] >= 2 || d[y] >= 2){
            for (int i: A[a]){
                for (int j: A[b]){
                    assert(out[i][j] == -1);
                    assert(out[j][i] == -1);
                    out[i][j] = out[j][i] = w;
                }
            }
            f[b] = 1;
        }
        else {
            d[x]++; d[y]++;
        }
        
        for (int i: A[a]) A[b].pb(i);
        p[a] = b;
    }
};

dsu T;
int n, m;

void init(int N, int M, vector<int> U, vector<int> V, vector<int> W){
    n = N; m = M;
    vector<arr3> ed;
    for (int i = 0; i < m; i++){
        ed.pb({W[i], U[i] + 1, V[i] + 1});
    }
    sort(ed.begin(), ed.end());
    T.init(n);
    for (auto [f, x, y]: ed){
        T.unite(x, y, f);
    }
}

int getMinimumFuelCapacity(int x, int y){
    x++; y++;
    if (T.out[x][y] == -1 && m != (n - 1)){
        while (true){
            x++;
        }
    }
    return T.out[x][y];
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 1104 KB Output is correct
5 Correct 3 ms 3920 KB Output is correct
6 Correct 5 ms 3752 KB Output is correct
7 Correct 4 ms 4432 KB Output is correct
8 Correct 3 ms 4432 KB Output is correct
9 Runtime error 393 ms 524288 KB Execution killed with signal 9
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Runtime error 440 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 1104 KB Output is correct
5 Correct 3 ms 3920 KB Output is correct
6 Correct 5 ms 3752 KB Output is correct
7 Correct 4 ms 4432 KB Output is correct
8 Correct 3 ms 4432 KB Output is correct
9 Correct 1 ms 336 KB Output is correct
10 Correct 5 ms 4428 KB Output is correct
11 Correct 4 ms 4432 KB Output is correct
12 Correct 6 ms 4176 KB Output is correct
13 Correct 4 ms 3152 KB Output is correct
14 Correct 4 ms 3408 KB Output is correct
15 Incorrect 4 ms 4336 KB Output isn't correct
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 336 KB Output is correct
5 Correct 1 ms 1104 KB Output is correct
6 Correct 3 ms 3920 KB Output is correct
7 Correct 5 ms 3752 KB Output is correct
8 Correct 4 ms 4432 KB Output is correct
9 Correct 3 ms 4432 KB Output is correct
10 Runtime error 393 ms 524288 KB Execution killed with signal 9
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 1104 KB Output is correct
5 Correct 3 ms 3920 KB Output is correct
6 Correct 5 ms 3752 KB Output is correct
7 Correct 4 ms 4432 KB Output is correct
8 Correct 3 ms 4432 KB Output is correct
9 Runtime error 393 ms 524288 KB Execution killed with signal 9
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 336 KB Output is correct
5 Correct 1 ms 1104 KB Output is correct
6 Correct 3 ms 3920 KB Output is correct
7 Correct 5 ms 3752 KB Output is correct
8 Correct 4 ms 4432 KB Output is correct
9 Correct 3 ms 4432 KB Output is correct
10 Runtime error 393 ms 524288 KB Execution killed with signal 9
11 Halted 0 ms 0 KB -