Submission #1230751

#TimeUsernameProblemLanguageResultExecution timeMemory
1230751ballsFactories (JOI14_factories)C++20
Compilation error
0 ms0 KiB
#pragma GCC optimize("Ofast") #include "factories.h" #include<bits/stdc++.h> using namespace std; const int MaxN = 5e5 + 7; const int Log = 20; vector<int> g[MaxN]; vector<long long> c[MaxN]; int p[MaxN], in[MaxN], arr[MaxN], d[MaxN], n, sz, cn, gl; long long be[MaxN][Log], opt[MaxN]; bool vc[MaxN]; int dfssz(int s, int f) { int x = 1; for (int i = 0; i < g[s].size(); i++) { if (g[s][i] != f && !vc[g[s][i]]) { x += dfssz(g[s][i], s); } } return x; } int dfsc(int s, int f) { int x = 1; bool ce = true; for (int i = 0; i < g[s].size(); i++) { if (g[s][i] != f && !vc[g[s][i]]) { int a = dfsc(g[s][i], s); if (a > sz / 2) { ce=false; } x += a; } if (sz - x > sz / 2) { ce = false; } if (ce) { cn = s; } return x; } void dfs(int s, int f, long long dist, int po) { if (d[s] < d[po]) { return; } be[s][d[s] - d[po]] = dist; for (int i = 0; i < g[s].size(); i++) { if (g[s][i] != f) { dfs(g[s][i], s, dist + c[s][i], po); } } } void comp(int s, int f, int du) { sz = dfssz(s, -1); dfsc(s, -1); p[cn] = f; vc[cn] = true; d[cn] = du; int tmp = cn; for (int i = 0; i < g[tmp].size(); i++) { if (!vc[g[tmp][i]]) { comp(g[tmp][i], tmp, du + 1); } } } void Init(int N, int A[], int B[], int D[]) { n = N; int root; for (int i = 0; i < n - 1; i++) { g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); c[A[i]].push_back(D[i]); c[B[i]].push_back(D[i]); } comp(0, -1, 0); for (int i = 0; i < n; i++) { dfs(i, -1, 0, i); } fill(opt, opt + MaxN, 1e18); } long long Query(int S, int X[], int T, int Y[]) { int s = S, t = T; long long sk = 1e18; for (int i = 0; i < s; i++) { int a = X[i]; cnt = 0; while (a != -1) { opt[a] = min(opt[a], be[X[i]][cnt]); a = p[a]; cnt++; } } for (int i = 0; i < t; i++) { int a = Y[i]; cnt = 0; while (a != -1) { sk = min(sk, be[Y[i]][cnt] + opt[a]); a = p[a]; cnt++; } } for (int i = 0; i < s; i++) { int a = X[i]; while (a != -1) { opt[a] = 1e18; a = p[a]; } } return sk; }

Compilation message (stderr)

factories.cpp: In function 'int dfsc(int, int)':
factories.cpp:45:48: error: a function-definition is not allowed here before '{' token
   45 | void dfs(int s, int f, long long dist, int po) {
      |                                                ^
factories.cpp:57:33: error: a function-definition is not allowed here before '{' token
   57 | void comp(int s, int f, int du) {
      |                                 ^
factories.cpp:71:45: error: a function-definition is not allowed here before '{' token
   71 | void Init(int N, int A[], int B[], int D[]) {
      |                                             ^
factories.cpp:87:49: error: a function-definition is not allowed here before '{' token
   87 | long long Query(int S, int X[], int T, int Y[]) {
      |                                                 ^
factories.cpp:116:2: error: expected '}' at end of input
  116 | }
      |  ^
factories.cpp:25:24: note: to match this '{'
   25 | int dfsc(int s, int f) {
      |                        ^
factories.cpp:116:2: warning: control reaches end of non-void function [-Wreturn-type]
  116 | }
      |  ^