Submission #561717

# Submission time Handle Problem Language Result Execution time Memory
561717 2022-05-13T11:57:44 Z piOOE Road Closures (APIO21_roads) C++17
17 / 100
101 ms 20368 KB
#include "roads.h"

#include <bits/stdc++.h>

using namespace std;

#define all(x) begin(x), end(x)

typedef long long ll;

const int N = 100001;
int A[N], B[N], W[N], n, depth[N];
vector<int> g[N];
bool used[N];
int pp[N], cnt[N];

void dfs(int v, int p) {
    pp[v] = p;
    for (int to: g[v]) {
        if (to != p) {
            depth[to] = depth[v] + 1;
            dfs(to, v);
        }
    }
}

vector<ll> minimum_closure_costs(int nn, vector<int> uu, vector<int> vv, vector<int> ww) {
    n = nn;
    for (int i = 0; i < n - 1; ++i) {
        A[i] = uu[i], B[i] = vv[i], W[i] = ww[i];
        g[A[i]].push_back(B[i]);
        g[B[i]].push_back(A[i]);
    }
    vector<ll> ans(n);
    if (*max_element(all(W)) == 1) {
        vector<int> ord(n);
        iota(all(ord), 0);
        sort(all(ord), [](int i, int j) {
            return g[i].size() > g[j].size();
        });
        dfs(0, -1);
        for (int k = 0; k < n; ++k) {
            vector<int> now;
            for (int i: ord) {
                if (g[i].size() <= k) break;
                now.push_back(i);
                used[i] = true;
                cnt[i] = g[i].size();
            }
            sort(all(now), [](int i, int j) {
                return depth[i] > depth[j];
            });
            for (int i: now) {
                if (pp[i] != -1 && used[pp[i]] && cnt[i] > k) {
                    --cnt[pp[i]];
                    --cnt[i];
                    ++ans[k];
                }
            }
            for (int i: now) {
                ans[k] += max(0, cnt[i] - k);
                used[i] = false;
            }
        }
        return ans;
    } else {
        assert(false);
    }
}

Compilation message

roads.cpp: In function 'std::vector<long long int> minimum_closure_costs(int, std::vector<int>, std::vector<int>, std::vector<int>)':
roads.cpp:45:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |                 if (g[i].size() <= k) break;
      |                     ~~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 5204 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 5204 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 5204 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 5204 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 101 ms 12116 KB Output is correct
2 Correct 74 ms 13260 KB Output is correct
3 Correct 63 ms 14376 KB Output is correct
4 Correct 94 ms 13764 KB Output is correct
5 Correct 85 ms 14400 KB Output is correct
6 Correct 64 ms 14072 KB Output is correct
7 Correct 71 ms 14092 KB Output is correct
8 Correct 55 ms 13252 KB Output is correct
9 Correct 79 ms 15288 KB Output is correct
10 Correct 69 ms 13540 KB Output is correct
11 Correct 62 ms 14188 KB Output is correct
12 Correct 62 ms 13944 KB Output is correct
13 Correct 2 ms 2644 KB Output is correct
14 Correct 60 ms 18580 KB Output is correct
15 Correct 62 ms 20368 KB Output is correct
16 Correct 3 ms 2892 KB Output is correct
17 Correct 3 ms 2848 KB Output is correct
18 Correct 3 ms 2808 KB Output is correct
19 Correct 3 ms 2804 KB Output is correct
20 Correct 3 ms 2900 KB Output is correct
21 Correct 53 ms 12740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 101 ms 12116 KB Output is correct
2 Correct 74 ms 13260 KB Output is correct
3 Correct 63 ms 14376 KB Output is correct
4 Correct 94 ms 13764 KB Output is correct
5 Correct 85 ms 14400 KB Output is correct
6 Correct 64 ms 14072 KB Output is correct
7 Correct 71 ms 14092 KB Output is correct
8 Correct 55 ms 13252 KB Output is correct
9 Correct 79 ms 15288 KB Output is correct
10 Correct 69 ms 13540 KB Output is correct
11 Correct 62 ms 14188 KB Output is correct
12 Correct 62 ms 13944 KB Output is correct
13 Correct 2 ms 2644 KB Output is correct
14 Correct 60 ms 18580 KB Output is correct
15 Correct 62 ms 20368 KB Output is correct
16 Correct 3 ms 2892 KB Output is correct
17 Correct 3 ms 2848 KB Output is correct
18 Correct 3 ms 2808 KB Output is correct
19 Correct 3 ms 2804 KB Output is correct
20 Correct 3 ms 2900 KB Output is correct
21 Correct 53 ms 12740 KB Output is correct
22 Runtime error 5 ms 5204 KB Execution killed with signal 6
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 5204 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -