Submission #1292103

#TimeUsernameProblemLanguageResultExecution timeMemory
1292103tormentFactories (JOI14_factories)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; const int N = 5e5 + 5; const int B = 1000; const int LOG = 20; vector<array<int, 2>>G[N]; int tin[N], tout[N], TIME = 0, up[LOG][N]; long long d[N]; void dfs(int node, int par){ tin[node] = ++TIME; up[0][node] = par; for(auto &[v, w] : G[node]){ if(v == par)continue; d[v] = d[node] + w; dfs(v, node); } tout[node] = TIME; } bool isAncestor(int u, int v){ return (tin[u] <= tin[v] && tout[v] <= tout[u]); } int LCA(int u, int v){ if(isAncestor(u, v))return u; for(int i = LOG - 1;i >= 0;--i){ if(!isAncestor(up[i][u], v)){ u = up[i][u]; } } return up[0][u]; } long long dist(int u, int v){ return d[u] + d[v] - 2 * d[LCA(u, v)]; } void Init(int N, int A[], int B[], int D[]){ for(int i = 0;i < N - 1;++i){ G[A[i]].push_back({B[i], D[i]}); G[B[i]].push_back({A[i], D[i]}); } dfs(0, 0); for(int i = 1;i < LOG;++i){ for(int j = 0;j < N;++j){ up[i][j] = up[i - 1][up[i - 1][j]]; } } } long long Query(int S, int X[], int T, int Y[]){ long long mn = 1e18; if(S >= B){ vector<long long>dist2(N, 1e18); priority_queue<array<long long, 2>>pq; for(int i = 0;i < S;++i){ dist2[X[i]] = 0; pq.push({dist2[X[i]], X[i]}); } while(!pq.empty()){ long long d1 = -pq.top()[0], node = pq.top()[1]; pq.pop(); if(d1 != dist2[node])continue; for(auto &[v, w] : G[node]){ if(dist2[v] > dist2[node] + w){ dist2[v] = dist2[node] + w; pq.push({-dist2[v], v}); } } } for(int i = 0;i < T;++i){ mn = min(mn, dist2[Y[i]]); } } else{ for(int i = 0;i < S;++i){ for(int j = 0;j < T;++j){ mn = min(mn, dist(X[i], Y[j])); } } } return mn; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, q; cin >> n >> q; int a[n - 1], b[n - 1], d[n - 1]; for(int i = 0;i < n - 1;++i){ cin >> a[i] >> b[i] >> d[i]; } Init(n, a, b, d); while(q--){ int s, t; cin >> s >> t; int x[s], y[t]; for(int i = 0;i < s;++i){ cin >> x[i]; } for(int i = 0;i < t;++i){ cin >> y[i]; } cout << Query(s, x, t, y) << '\n'; } }

Compilation message (stderr)

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