結果
問題 | No.1221 木 *= 3 |
ユーザー |
![]() |
提出日時 | 2020-09-04 22:36:00 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 167 ms / 2,000 ms |
コード長 | 1,092 bytes |
コンパイル時間 | 1,459 ms |
コンパイル使用メモリ | 173,268 KB |
実行使用メモリ | 22,272 KB |
最終ジャッジ日時 | 2024-11-26 15:51:29 |
合計ジャッジ時間 | 5,009 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h>//#include <chrono>//#pragma GCC optimize("Ofast")using namespace std;#define reps(i,s,n) for(int i = s; i < n; i++)#define rep(i,n) reps(i,0,n)#define Rreps(i,n,e) for(int i = n - 1; i >= e; --i)#define Rrep(i,n) Rreps(i,n,0)#define ALL(a) a.begin(), a.end()#define fi first#define se secondtypedef long long ll;typedef vector<ll> vec;typedef vector<vec> mat;ll N,M,H,W,Q,K,A,B;string S;typedef pair<ll, ll> P;const ll INF = (1LL<<60);void dfs(int v, int p, mat &G, vec &a, vec &b, vec &r, vec &e){e[v] += a[v];for(auto to : G[v]){if(to != p){dfs(to, v, G, a, b, r, e);e[v] += max(r[to], e[to]);r[v] += max(b[v] + b[to] + r[to], e[to]);}}}int main() {cin>>N;mat G(N, vec(0));vec a(N), b(N), r(N, 0), e(N, 0);rep(i,N) cin>>a[i];rep(i,N) cin>>b[i];rep(i, N - 1){int u, t;cin>>u>>t;--u; --t;G[u].push_back(t);G[t].push_back(u);}dfs(0, -1, G, a, b, r, e);cout<<max(r[0], e[0])<<endl;}