이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define speed ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define ll long long
#define pb push_back
#define mp make_pair
#define f first
#define s second
#define pill pair<ll, ll>
using namespace std;
const ll N = 1e4 + 10;
const ll big = 1e9;
ll n;
vector<pair<int,int>> g[N];
int dp2[N][3];
int ans;
void dfs(int v, int p, int z) {
dp2[v][0] = 0, dp2[v][1] = -big, dp2[v][2] = -big;
for(auto u : g[v]) {
if(u.f != p) {
dfs(u.f, v, u.s);
int z = max(dp2[u.f][0], dp2[u.f][1] + u.s);
dp2[v][2] = max(dp2[v][2] + z, dp2[v][1] + dp2[u.f][0] + u.s);
dp2[v][1] = max(dp2[v][1] + z, dp2[v][0] + dp2[u.f][0] + u.s);
dp2[v][0] = dp2[v][0] + z;
}
}
ans = max(ans, dp2[v][2]);
}
int main() {
speed;
cin >> n;
for(int i = 1, a, b, c; i < n; i++)
cin >> a >> b >> c, g[a].pb(mp(b, c)), g[b].pb(mp(a, c));
for(int i = 1; i <= n; i++)
dfs(i, 0, 0);
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |