Submission #865024

#TimeUsernameProblemLanguageResultExecution timeMemory
865024LittleOrangeDesignated Cities (JOI19_designated_cities)C++17
7 / 100
186 ms44468 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; struct obj{ ll to,c0,c1;// to, back }; int main(){ ios::sync_with_stdio(0);cin.tie(0); ll n,q; cin >> n; vector<vector<obj>> con(n); ll tot = 0; for(ll i = 1;i<n;i++){ ll a,b,c,d; cin >> a >> b >> c >> d;a--;b--; con[a].push_back({b,c,d}); con[b].push_back({a,d,c}); tot += c+d; } cin >> q; vector<ll> dp(n,0); { function<ll(ll,ll)> dfs; dfs = [&](ll i, ll p){ ll cur = 0; for(obj l : con[i]){ if (l.to!=p){ cur += l.c1 + dfs(l.to,i); } } return cur; }; dp[0] = dfs(0,-1); } { function<void(ll,ll,ll)> dfs; dfs = [&](ll i, ll p, ll v){ dp[i] = v; for(obj l : con[i]){ if (l.to!=p){ dfs(l.to,i,v+l.c0-l.c1); } } }; dfs(0,-1,dp[0]); } while(q--){ ll e; cin >> e; if (e==1){ ll ans = 0; for(ll i : dp) ans = max(i,ans); ans = tot-ans; cout << ans << "\n"; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...