結果
問題 | No.1221 木 *= 3 |
ユーザー |
|
提出日時 | 2020-09-04 22:26:33 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 71 ms / 2,000 ms |
コード長 | 1,997 bytes |
コンパイル時間 | 1,547 ms |
コンパイル使用メモリ | 175,520 KB |
実行使用メモリ | 20,864 KB |
最終ジャッジ日時 | 2024-11-26 14:40:17 |
合計ジャッジ時間 | 3,818 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define SZ(x) (int)(x.size())#define REP(i, n) for(int i=0;i<(n);++i)#define FOR(i, a, b) for(int i=(a);i<(b);++i)#define RREP(i, n) for(int i=(int)(n);i>=0;--i)#define RFOR(i, a, b) for(int i=(int)(a);i>=(int)(b);--i)#define ALL(a) (a).begin(),(a).end()#define DUMP(x) cerr<<#x<<" = "<<(x)<<endl#define DEBUG(x) cerr<<#x<<" = "<<(x)<<" (L"<<__LINE__<<")"<< endl;using ll = long long;using vi = vector<int>;using vvi = vector<vi>;using vll = vector<ll>;using vvll = vector<vll>;using P = pair<int, int>;const double eps = 1e-8;const ll MOD = 1000000007;const int INF = INT_MAX / 2;const ll LINF = LLONG_MAX / 2;template <typename T1, typename T2>bool chmax(T1 &a, const T2 &b) {if(a < b) {a = b; return true;}return false;}template <typename T1, typename T2>bool chmin(T1 &a, const T2 &b) {if(a > b) {a = b; return true;}return false;}template<typename T1, typename T2>ostream& operator<<(ostream &os, const pair<T1, T2> p) {os << p.first << ":" << p.second;return os;}template<class T>ostream &operator<<(ostream &os, const vector<T> &v) {REP(i, SZ(v)) {if(i) os << " ";os << v[i];}return os;}void dfs(int now, int prev, vvi &g, vvll &dp, vll &a, vll &b) {for(auto &nxt: g[now]) {if(nxt == prev) continue;dfs(nxt, now, g, dp, a, b);}dp[0][now] = a[now];for(auto &nxt: g[now]) {if(nxt == prev) continue;dp[0][now] += max(dp[0][nxt], dp[1][nxt]);dp[1][now] += max(dp[0][nxt], dp[1][nxt] + b[nxt] + b[now]);}}int main() {cin.tie(0);ios::sync_with_stdio(false);cout << fixed << setprecision(10);int n; cin >> n;vll a(n), b(n);REP(i, n) cin >> a[i];REP(i, n) cin >> b[i];vvi g(n);REP(i, n-1) {int u, v; cin >> u >> v;u--; v--;g[u].push_back(v);g[v].push_back(u);}vvll dp(2, vll(n, 0));dfs(0, -1, g, dp, a, b);cout << max(dp[0][0], dp[1][0]) << endl;return 0;}