# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
922258 | 2024-02-05T10:00:51 Z | Beerus13 | 공장들 (JOI14_factories) | C++14 | 4462 ms | 372804 KB |
#include <bits/stdc++.h> // #include "factories.h" using namespace std; #define ll long long #define pii pair<int, ll> const int N = 5e5 + 5; const ll inf = 1e15; int n, q, S, T, centroid; int sz[N], vt[N]; vector<pii> g[N], ancestors[N]; bool del[N]; ll dp[N]; int dfs_size(int u, int p = 0) { sz[u] = 1; for(auto [v, w] : g[u]) if(v != p && !del[v]) { sz[u] += dfs_size(v, u); } return sz[u]; } int find_centroid(int u, int p, int num) { for(auto [v, w] : g[u]) if(v != p && !del[v] && sz[v] > num / 2) return find_centroid(v, u, num); return u; } void dfs_centroid(int u, int par, ll dis) { for(auto [v, w] : g[u]) if(v != par && !del[v]) dfs_centroid(v, u, dis + w); ancestors[u].emplace_back(centroid, dis); } void decomposition(int u) { centroid = find_centroid(u, 0, dfs_size(u)); del[centroid] = 1; dfs_centroid(centroid, centroid, 0); for(auto [v, w] : g[centroid]) { if(!del[v]) decomposition(v); } } void add(int u) { for(auto [v, w] : ancestors[u]) dp[v] = min(dp[v], w); } void remove(int u) { for(auto [v, w] : ancestors[u]) dp[v] = inf; } ll get(int u) { ll ans = inf; for(auto [v, w] : ancestors[u]) ans = min(ans, w + dp[v]); return ans; } void Init(int N, int A[], int B[], int D[]) { for(int i = 0; i < N - 1; ++i) { A[i]++; B[i]++; g[A[i]].emplace_back(B[i], D[i]); g[B[i]].emplace_back(A[i], D[i]); } for(int i = 1; i <= N; ++i) dp[i] = inf; decomposition(1); } ll Query(int S, int X[], int T, int Y[]) { for (int i = 0; i < S; i++) add(X[i] + 1); ll ans = 1e15; for (int i = 0; i < T; i++) ans = min(ans, get(Y[i] + 1)); for (int i = 0; i < S; i++) remove(X[i] + 1); return ans; } // https://oj.uz/problem/view/JOI14_factories
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 14 ms | 45832 KB | Output is correct |
2 | Correct | 235 ms | 60224 KB | Output is correct |
3 | Correct | 233 ms | 60740 KB | Output is correct |
4 | Correct | 217 ms | 60500 KB | Output is correct |
5 | Correct | 236 ms | 60912 KB | Output is correct |
6 | Correct | 157 ms | 59608 KB | Output is correct |
7 | Correct | 220 ms | 60656 KB | Output is correct |
8 | Correct | 222 ms | 60736 KB | Output is correct |
9 | Correct | 261 ms | 61096 KB | Output is correct |
10 | Correct | 158 ms | 59732 KB | Output is correct |
11 | Correct | 219 ms | 60536 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 11 ms | 45660 KB | Output is correct |
2 | Correct | 2041 ms | 227008 KB | Output is correct |
3 | Correct | 2944 ms | 298160 KB | Output is correct |
4 | Correct | 737 ms | 120788 KB | Output is correct |
5 | Correct | 3476 ms | 372804 KB | Output is correct |
6 | Correct | 3131 ms | 298156 KB | Output is correct |
7 | Correct | 754 ms | 99812 KB | Output is correct |
8 | Correct | 321 ms | 76188 KB | Output is correct |
9 | Correct | 1002 ms | 112468 KB | Output is correct |
10 | Correct | 846 ms | 100492 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 14 ms | 45832 KB | Output is correct |
2 | Correct | 235 ms | 60224 KB | Output is correct |
3 | Correct | 233 ms | 60740 KB | Output is correct |
4 | Correct | 217 ms | 60500 KB | Output is correct |
5 | Correct | 236 ms | 60912 KB | Output is correct |
6 | Correct | 157 ms | 59608 KB | Output is correct |
7 | Correct | 220 ms | 60656 KB | Output is correct |
8 | Correct | 222 ms | 60736 KB | Output is correct |
9 | Correct | 261 ms | 61096 KB | Output is correct |
10 | Correct | 158 ms | 59732 KB | Output is correct |
11 | Correct | 219 ms | 60536 KB | Output is correct |
12 | Correct | 11 ms | 45660 KB | Output is correct |
13 | Correct | 2041 ms | 227008 KB | Output is correct |
14 | Correct | 2944 ms | 298160 KB | Output is correct |
15 | Correct | 737 ms | 120788 KB | Output is correct |
16 | Correct | 3476 ms | 372804 KB | Output is correct |
17 | Correct | 3131 ms | 298156 KB | Output is correct |
18 | Correct | 754 ms | 99812 KB | Output is correct |
19 | Correct | 321 ms | 76188 KB | Output is correct |
20 | Correct | 1002 ms | 112468 KB | Output is correct |
21 | Correct | 846 ms | 100492 KB | Output is correct |
22 | Correct | 2422 ms | 229640 KB | Output is correct |
23 | Correct | 2432 ms | 233356 KB | Output is correct |
24 | Correct | 3737 ms | 302332 KB | Output is correct |
25 | Correct | 3771 ms | 304920 KB | Output is correct |
26 | Correct | 3612 ms | 303472 KB | Output is correct |
27 | Correct | 4462 ms | 372796 KB | Output is correct |
28 | Correct | 935 ms | 127100 KB | Output is correct |
29 | Correct | 3565 ms | 302720 KB | Output is correct |
30 | Correct | 3596 ms | 302572 KB | Output is correct |
31 | Correct | 3679 ms | 303092 KB | Output is correct |
32 | Correct | 1043 ms | 112512 KB | Output is correct |
33 | Correct | 263 ms | 76776 KB | Output is correct |
34 | Correct | 618 ms | 93124 KB | Output is correct |
35 | Correct | 551 ms | 93776 KB | Output is correct |
36 | Correct | 762 ms | 99028 KB | Output is correct |
37 | Correct | 826 ms | 99024 KB | Output is correct |