이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5;
vector<pair<int, int>> adj[N];
int dp1[N], dp2[N], n;
void dfs(int v, int p = -1) {
vector<int> v1, v2, v3;
int ans = 0, delta = -1e18;
for (auto i : adj[v]) {
if (i.first == p)
continue;
dfs(i.first, v);
v1.push_back(dp1[i.first]);
v2.push_back(dp2[i.first] + i.second);
ans += max(v1.back(), v2.back());
if (v1.back() >= v2.back())
v3.push_back(i.second);
else
v3.push_back(dp1[i.first] - dp2[i.first]);
}
dp1[v] = ans;
sort(v3.begin(),v3.end(), greater<>());
if (v3.size() >= 2 && v3[0] + v3[1] > 0)
dp1[v] += v3[0] + v3[1];
dp2[v] = ans + (v3.empty() ? -1e13 : v3[0]);
}
int solveTestCase() {
cin >> n;
for (int i = 0; i < n - 1; i++) {
int a, b, c;
cin >> a >> b >> c;
a--, b--;
adj[a].emplace_back(b, c);
adj[b].emplace_back(a, c);
}
dfs(0);
cout << dp1[0];
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
//cin >> t;
while (t--)
solveTestCase();
}
컴파일 시 표준 에러 (stderr) 메시지
beads.cpp: In function 'void dfs(long long int, long long int)':
beads.cpp:11:18: warning: unused variable 'delta' [-Wunused-variable]
int ans = 0, delta = -1e18;
^~~~~
beads.cpp: In function 'long long int solveTestCase()':
beads.cpp:48:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
# | 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... |