0pts求条
查看原帖
0pts求条
975724
Sine_Func楼主2025/2/7 09:04
#include <bits/stdc++.h>
#define double long double
#define AC return 0
#define pii pair<int,int>
#define fi first
#define se second
#define gc getchar
#define el cout<<"\n"
#define ls (p<<1)
#define rs (p<<1|1)
//#define int long long
using namespace std;
const int N = 500010;
int n, rot, a, b, t, ans, dis[N];
vector<pii>edge[N];
void h(int x) {
	for (auto i : edge[x]) {
		h(i.fi);
		dis[x] = max(dis[x], dis[i.fi] + i.se);
	}
}
void dfs(int x) {
	for (auto i : edge[x]) {
		dfs(i.fi);
		ans += (dis[x] - i.se - dis[i.fi]);
	}
}
signed main() {
	cin >> n >> rot;
	for (int i = 1; i < n; i++) {
		cin >> a >> b >> t;
		edge[a].push_back({b, t});
	}
	h(rot);
	dfs(rot);
	cout << ans;
	AC;
}
2025/2/7 09:04
加载中...