竞赛讨论区 > 5% 求教
头像
牛客464051265号
发布于 03-01 12:30
+ 关注

5% 求教

#include<iostream>

#include<vector>

#include<bits/stdc++.h>

#include<algorithm>

//#define int long long

//#define ld long double

using namespace std;

typedef long long ll;

typedef pair<int, int> pii;

const ll N = 1e9 + 7; ll mod = 1e9 + 7;

const int maxe = 1e5 + 7;

const int inf = 0x3f3f3f3f3f3f3f3f;

ll dp[maxe][2];

vector<int> g[maxe];

ll val[maxe];

ll ans = 0;

void dfs(int u, int pre)

{

dp[u][1] = val[u];

dp[u][0] = 0;

int d=0;

for (auto& i : g[u])

{

if (i == pre)continue;

dfs(i, u);

int x=dp[i][1]-dp[i][0];

d=max(d,x);

dp[u][0] += dp[i][0];

dp[u][1] += dp[i][0];

}

dp[u][0]+=d;

}

int main()

{

memset(val, 0, sizeof(val));

int n; cin >> n;

for (int i = 1; i <= n - 1; i++)

{

int x, y, v; cin >> x >> y >> v;

g[x].push_back(y);

g[y].push_back(x);

val[y] = v;

}

dfs(1, 0);

cout<<dp[1][0] << endl;

}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐