Submission
Status:
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
Score: 100
User: Dormon
Problemset: Sirabyrinth 6
Language: cpp
Time: 0.016 second
Submitted On: 2025-03-14 16:34:19
#include <iostream>
#include <vector>
using namespace std;
const int N = 2e4+2;
vector<pair<int, int>> adj[N];
int dp1[N], dp2[N];
int dfs1(int u, int pre){
for (auto [v, w]:adj[u]){
if (v == pre) continue;
dp1[u] += w + dfs1(v, u);
}
return dp1[u];
}
int dfs2(int u, int pre){
for (auto [v, w]:adj[u]){
if (v == pre) continue;
dp2[u] = max(dp2[u], w + dfs2(v, u));
}
return dp2[u];
}
int main()
{
int n, st;
cin >> n >> st;
for (int i = 1;i < n;i++){
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
cout << 2 * dfs1(st, -1) - dfs2(st, -1) << '\n';
}