제출 #531805

#제출 시각아이디문제언어결과실행 시간메모리
531805hgmhc공장들 (JOI14_factories)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define REP(i,a,b) for (auto i = (a); i <= (b); ++i) #define PER(i,a,b) for (auto i = (b); i >= (a); --i) #define log2(x) (31-__builtin_clz(x)) #define mup(x,y) x = min(x,y) #define Mup(x,y) x = max(x,y) #define el '\n' using namespace std; using ll = long long; void solution(); int main() {ios::sync_with_stdio(0); cin.tie(0); solution();} const int N = 500003; int n, q; vector<pair<int,ll>> adj[N]; //**-------- WARNING! 0-index to 1-index --------**// int par[N], lev[N], spt[N][log2(N)+1]; ll dist[5003][5003], depth[N]; void precom1(int r, int s, int e = 0) { for (auto [u,w] : adj[s]) if (u != e) { dist[r][u] = dist[r][s]+w; precom1(r,u,s); } } void precom2(int s = 1, int e = 0) { for (auto [u,w] : adj[s]) if (u != e) { depth[u] = depth[s]+w; par[u] = s; lev[u] = lev[s]+1; precom2(u,s); } } void input() { cin >> n >> q; REP(i,0,n-2) { int a, b, d; cin >> a >> b >> d; adj[a+1].push_back({b+1,d}); adj[b+1].push_back({a+1,d}); } } void solution() { input(); if (n <= 5000 && q <= 5000) { REP(i,1,n) precom1(i,i); while (q--) { int s, t; cin >> s >> t; vector<int> X(s), Y(t); for (int& x : X) {cin >> x; ++x;} for (int& y : Y) {cin >> y; ++y;} ll ans = LLONG_MAX; for (int x : X) for (int y : Y) mup(ans,dist[x][y]); cout << ans << el; } } else { precom2(); //make sparse table REP(j,1,n) spt[j][0] = par[j]; REP(i,1,log2(N)) REP(j,1,n) spt[j][i] = spt[spt[j][i-1]][i-1]; function<int(int,int)> lca = [&](int a, int b) { if (lev[a] > lev[b]) swap(a,b); REP(i,0,log2(N)) if ((lev[b]-lev[a])&(1<<i)) b = spt[b][i]; if (a == b) return a; PER(x,0,log2(N)) if (spt[a][x] != spt[b][x]) a = spt[a][x], b = spt[b][x]; return spt[a][0]; }; while (q--) { int s, t; cin >> s >> t; vector<int> X(s), Y(t); for (int& x : X) {cin >> x; ++x;} for (int& y : Y) {cin >> y; ++y;} ll ans = LLONG_MAX; for (int x : X) for (int y : Y) mup(ans,depth[x]+depth[y]-2*depth[lca(x,y)]); cout << ans << el; } } //Consider ∑S, ∑T <= 10^6 }

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/cc5itX1b.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccDWtuz9.o:factories.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc5itX1b.o: in function `main':
grader.cpp:(.text.startup+0x37d): undefined reference to `Init(int, int*, int*, int*)'
/usr/bin/ld: grader.cpp:(.text.startup+0x412): undefined reference to `Query(int, int*, int, int*)'
collect2: error: ld returned 1 exit status