#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define F first
#define S second
// Define here .
const int N = 3e5+10;
vector<pair <int,ll > > adj[N];
ll w[N],dp[N][2];
int n;
ll D=0;
void dfs(int u,int p)
{
dp[u][0]=dp[u][1]=w[u];
for(auto v:adj[u])
{
if(v.F==p)
continue;
dfs(v.F,u);
dp[u][1]=max(dp[u][1],dp[v.F][0]+dp[u][0]-v.S);
dp[u][0]=max(dp[u][0],dp[v.F][0]+w[u]-v.S);
}
D =max(D,max(dp[u][0],dp[u][1]));
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<n;i++)
{
int x,y,w;
cin>>x>>y>>w;
adj[x].pb({y,w});
adj[y].pb({x,w});
}
dfs(1,-1);
cout<<D;
return 0;
}
62. Unique Paths | 50. Pow(x, n) |
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |
Removal of vertices | Happy segments |