Submission #734193

#TimeUsernameProblemLanguageResultExecution timeMemory
734193SanguineChameleonBeads and wires (APIO14_beads)C++17
28 / 100
1072 ms5588 KiB
#include <bits/stdc++.h>
using namespace std;

void just_do_it();

int main() {
	#ifdef KAMIRULEZ
		freopen("kamirulez.inp", "r", stdin);
		freopen("kamirulez.out", "w", stdout);
	#endif
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	just_do_it();
	return 0;
}

const int maxN = 2e5 + 20;
vector<pair<int, int>> adj[maxN];
int par_w[maxN];
int dp[maxN][2];

void dfs(int u, int p) {
	int tot = 0;
	int best = -par_w[u];
	for (auto x: adj[u]) {
		int v = x.first;
		int w = x.second;
		if (v != p) {
			par_w[v] = w;
			dfs(v, u);
			tot += max(dp[v][0], dp[v][1]);
			best = max(best, w + dp[v][0] - max(dp[v][0], dp[v][1]));
		}
	}
	dp[u][0] = tot;
	dp[u][1] = tot + best + par_w[u];
}

void just_do_it() {
	int n;
	cin >> n;
	for (int i = 0; i < n - 1; i++) {
		int u, v, w;
		cin >> u >> v >> w;
		adj[u].emplace_back(v, w);
		adj[v].emplace_back(u, w);
	}
	int res = 0;
	for (int u = 1; u <= n; u++) {
		dfs(u, -1);
		res = max(res, dp[u][0]);
	}
	cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...