Submission #764783

#TimeUsernameProblemLanguageResultExecution timeMemory
764783vjudge1Roadside Advertisements (NOI17_roadsideadverts)C++17
100 / 100
49 ms12796 KiB
#include <algorithm> #include <iostream> #include <iomanip> #include <bitset> #include <cmath> #include <queue> #include <map> #include <set> // Akhmet Issa using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define ent "\n" const int maxn = 5e4 + 100; const ll INF = (ll)2e18; const int inf = (ll)2e9; const int maxl = 20; const int MOD = 1e9 + 7; int n, t, q; vector<pii> g[maxn]; int p[maxl][maxn]; int sum[maxn]; int dep[maxn]; int tin[maxn]; int tout[maxn]; void dfs(int v){ tin[v] = ++t; for(int k = 1; k < maxl; k++){ p[k][v] = p[k-1][p[k-1][v]]; } for(auto [to, w]: g[v]){ if(to == p[0][v]) continue; p[0][to] = v; sum[to] = sum[v] + w; dep[to] = dep[v] + 1; dfs(to); } tout[v] = t; } bool ok(int a, int b){ return tin[a] <= tin[b] && tout[b] <= tout[a]; } int get(int a, int b){ if(ok(a, b)) return a; if(ok(b, a)) return b; for(int k = maxl - 1; k >= 0; k--){ if(p[k][a] && !ok(p[k][a], b)) a = p[k][a]; } return p[0][a]; } void test(){ cin >> n; for(int i = 1; i < n; i++){ int a, b, c; cin >> a >> b >> c; a++; b++; g[a].push_back({b, c}); g[b].push_back({a, c}); } dfs(1); cin >> q; for(int t = 1; t <= q; t++){ int a[5]; int r = -1; for(int i = 0; i < 5; i++){ cin >> a[i]; a[i]++; if(r == -1) r = a[i]; else r = get(r, a[i]); } ll ans = 0; for(int i = 0; i < 5; i++){ int r1 = r; for(int j = 0; j < i; j++){ int r2 = get(a[i], a[j]); if(dep[r1] < dep[r2]) r1 = r2; } ans += sum[a[i]] - sum[r1]; } cout << ans << ent; } } int main(){ // freopen("cows.in", "r", stdin); // freopen("cows.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); int t = 1; while(t--) test(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...