Submission #553804

#TimeUsernameProblemLanguageResultExecution timeMemory
553804QwertyPiFactories (JOI14_factories)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define pb push_back #define mp make_pair using namespace std; typedef pair<int, int> pii; const int N = 5e5 + 13; const int inf = 1LL << 60; int tail[N], d[N], p[N], dep[N]; vector<pii> G[N]; void dfs(int v, int par = -1){ int out = 0, son = -1; for(auto i : G[v]){ if(i.fi != par){ d[i.fi] = d[v] + i.se; p[i.fi] = v; dfs(i.fi, v); out++; son = i.fi; } } tail[v] = v, p[tail[v]] = p[v]; if(v != 0) dep[tail[v]] = dep[p[v]] + 1; // tail[v] = (out == 1 ? tail[son] : v), p[tail[v]] = p[v], dep[tail[v]] = dep[]; } void dfs2(int v, int par = -1){ for(auto i : G[v]){ if(i.fi != par){ if(v == tail[v]) dep[tail[i.fi]] = dep[v] + 1; dfs2(i.fi, v); } } } struct state{ int v, dis, colour; bool operator< (const state& o) const{ return v < o.v; } }; vector<state> qry[N]; int32_t main(){ // ios_base::sync_with_stdio(false); int n, m; cin >> n >> m; for(int i = 0; i < n - 1; i++){ int u, v, w; cin >> u >> v >> w; G[u].pb({v, w}); G[v].pb({u, w}); } dfs(0); dfs2(0); for(int i = 0; i < m; i++){ int s, t; cin >> s >> t; for(int j = n - 1; j >= 0; j--) qry[j].clear(); for(int j = 0; j < s; j++){ int v; cin >> v; qry[dep[tail[v]]].pb({tail[v], d[v] - d[tail[v]], 0}); } for(int j = 0; j < t; j++){ int v; cin >> v; qry[dep[tail[v]]].pb({tail[v], d[v] - d[tail[v]], 1}); } int ans = inf; for(int j = n - 1; j >= 0; j--){ vector<state> tmp; sort(qry[j].begin(), qry[j].end()); for(auto k : qry[j]){ bool used = false; if(tmp.size() >= 1 && tmp.back().v == k.v && tmp.back().colour + k.colour == 1) ans = min(ans, tmp.back().dis + k.dis); if(tmp.size() >= 2 && tmp[tmp.size() - 2].v == k.v && tmp[tmp.size() - 2].colour + k.colour == 1) ans = min(ans, tmp[tmp.size() - 2].dis + k.dis); if(tmp.size() >= 1 && tmp[tmp.size() - 1].v == k.v && tmp[tmp.size() - 1].colour == k.colour){ tmp[tmp.size() - 1].dis = min(tmp[tmp.size() - 1].dis, k.dis); used = true; } if(tmp.size() >= 2 && tmp[tmp.size() - 2].v == k.v && tmp[tmp.size() - 2].colour == k.colour){ tmp[tmp.size() - 2].dis = min(tmp[tmp.size() - 2].dis, k.dis); used = true; } if(!used){ tmp.pb(k); } } if(j > 0){ for(auto k : tmp){ qry[j - 1].pb({p[k.v], k.dis + d[k.v] - d[p[k.v]], k.colour}); } } } cout << ans << endl; } }

Compilation message (stderr)

factories.cpp: In function 'void dfs(long long int, long long int)':
factories.cpp:14:15: warning: variable 'son' set but not used [-Wunused-but-set-variable]
   14 |  int out = 0, son = -1;
      |               ^~~
/usr/bin/ld: /tmp/cc9AnEbJ.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccLupL4G.o:factories.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc9AnEbJ.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