#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll INF = (ll)4e18;
struct Dinic {
struct Edge {
int v;
ll cap;
int rev;
};
int n;
vector<vector<Edge>> g;
vector<int> level, cur;
Dinic(int n) : n(n) {
g.resize(n + 1);
level.resize(n + 1);
cur.resize(n + 1);
}
void addEdge(int u, int v, ll c) {
Edge a = {v, c, (int)g[v].size()};
Edge b = {u, 0, (int)g[u].size()};
g[u].push_back(a);
g[v].push_back(b);
}
bool bfs(int s, int t) {
fill(level.begin(), level.end(), -1);
queue<int> q;
q.push(s);
level[s] = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
for (auto &e : g[u]) {
if (e.cap > 0 && level[e.v] == -1) {
level[e.v] = level[u] + 1;
q.push(e.v);
}
}
}
return level[t] != -1;
}
ll dfs(int u, int t, ll pushed) {
if (u == t || pushed == 0)
return pushed;
for (int &i = cur[u]; i < (int)g[u].size(); i++) {
Edge &e = g[u][i];
if (e.cap <= 0 || level[e.v] != level[u] + 1)
continue;
ll tr = dfs(e.v, t, min(pushed, e.cap));
if (tr == 0)
continue;
e.cap -= tr;
g[e.v][e.rev].cap += tr;
return tr;
}
return 0;
}
ll maxflow(int s, int t) {
ll ans = 0;
while (bfs(s, t)) {
fill(cur.begin(), cur.end(), 0);
while (ll pushed = dfs(s, t, INF))
ans += pushed;
}
return ans;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<ll> a(n + 1);
for (int i = 1; i <= n; i++)
cin >> a[i];
vector<vector<int>> adj(n + 1);
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
struct Query {
int u, v;
ll c;
};
vector<Query> q(k + 1);
for (int i = 1; i <= k; i++)
cin >> q[i].u >> q[i].v >> q[i].c;
// Binary lifting
int LOG = 1;
while ((1 << LOG) <= n)
LOG++;
vector<vector<int>> up(n + 1, vector<int>(LOG));
vector<int> depth(n + 1);
// Iterative DFS
vector<int> order;
order.reserve(n);
order.push_back(1);
up[1][0] = 1;
for (int i = 0; i < (int)order.size(); i++) {
int u = order[i];
for (int v : adj[u]) {
if (v == up[u][0])
continue;
up[v][0] = u;
depth[v] = depth[u] + 1;
order.push_back(v);
}
}
for (int j = 1; j < LOG; j++) {
for (int u = 1; u <= n; u++) {
up[u][j] = up[up[u][j - 1]][j - 1];
}
}
auto lca = [&](int u, int v) {
if (depth[u] < depth[v])
swap(u, v);
int d = depth[u] - depth[v];
for (int i = 0; i < LOG; i++) {
if (d >> i & 1)
u = up[u][i];
}
if (u == v)
return u;
for (int i = LOG - 1; i >= 0; i--) {
if (up[u][i] != up[v][i]) {
u = up[u][i];
v = up[v][i];
}
}
return up[u][0];
};
// Tao node phu (u, i)
vector<vector<int>> id(n + 1, vector<int>(LOG));
int cnt = n;
for (int u = 1; u <= n; u++) {
id[u][0] = ++cnt;
}
for (int i = 1; i < LOG; i++) {
for (int u = 1; u <= n; u++) {
if (depth[u] + 1 < (1 << i))
continue;
id[u][i] = ++cnt;
}
}
// Node ngay
vector<int> day(k + 1);
for (int i = 1; i <= k; i++)
day[i] = ++cnt;
int S = ++cnt;
int T = ++cnt;
Dinic dinic(cnt);
// Original nodes -> T
for (int u = 1; u <= n; u++)
dinic.addEdge(u, T, a[u]);
// Auxiliary nodes
for (int u = 1; u <= n; u++) {
dinic.addEdge(id[u][0], u, INF);
}
for (int i = 1; i < LOG; i++) {
for (int u = 1; u <= n; u++) {
if (!id[u][i])
continue;
int mid = up[u][i - 1];
dinic.addEdge(id[u][i], id[u][i - 1], INF);
dinic.addEdge(id[u][i], id[mid][i - 1], INF);
}
}
// Phan ra doan di len tu u, gom len dinh LCA neu can
auto addPath = [&](int d, int u, int len) {
for (int i = LOG - 1; i >= 0; i--) {
if (len >> i & 1) {
dinic.addEdge(day[d], id[u][i], INF);
u = up[u][i];
}
}
};
// Source -> day -> auxiliary nodes
for (int i = 1; i <= k; i++) {
int u = q[i].u;
int v = q[i].v;
ll c = q[i].c;
dinic.addEdge(S, day[i], c);
int w = lca(u, v);
// u -> LCA (co lay LCA)
addPath(i, u, depth[u] - depth[w] + 1);
// v -> LCA (khong lay LCA)
addPath(i, v, depth[v] - depth[w]);
}
cout << dinic.maxflow(S, T) << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKY29uc3QgbGwgSU5GID0gKGxsKTRlMTg7CgpzdHJ1Y3QgRGluaWMgewogICAgc3RydWN0IEVkZ2UgewogICAgICAgIGludCB2OwogICAgICAgIGxsIGNhcDsKICAgICAgICBpbnQgcmV2OwogICAgfTsKCiAgICBpbnQgbjsKICAgIHZlY3Rvcjx2ZWN0b3I8RWRnZT4+IGc7CiAgICB2ZWN0b3I8aW50PiBsZXZlbCwgY3VyOwoKICAgIERpbmljKGludCBuKSA6IG4obikgewogICAgICAgIGcucmVzaXplKG4gKyAxKTsKICAgICAgICBsZXZlbC5yZXNpemUobiArIDEpOwogICAgICAgIGN1ci5yZXNpemUobiArIDEpOwogICAgfQoKICAgIHZvaWQgYWRkRWRnZShpbnQgdSwgaW50IHYsIGxsIGMpIHsKICAgICAgICBFZGdlIGEgPSB7diwgYywgKGludClnW3ZdLnNpemUoKX07CiAgICAgICAgRWRnZSBiID0ge3UsIDAsIChpbnQpZ1t1XS5zaXplKCl9OwoKICAgICAgICBnW3VdLnB1c2hfYmFjayhhKTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayhiKTsKICAgIH0KCiAgICBib29sIGJmcyhpbnQgcywgaW50IHQpIHsKICAgICAgICBmaWxsKGxldmVsLmJlZ2luKCksIGxldmVsLmVuZCgpLCAtMSk7CgogICAgICAgIHF1ZXVlPGludD4gcTsKICAgICAgICBxLnB1c2gocyk7CiAgICAgICAgbGV2ZWxbc10gPSAwOwoKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgICAgIGZvciAoYXV0byAmZSA6IGdbdV0pIHsKICAgICAgICAgICAgICAgIGlmIChlLmNhcCA+IDAgJiYgbGV2ZWxbZS52XSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGxldmVsW2Uudl0gPSBsZXZlbFt1XSArIDE7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKGUudik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBsZXZlbFt0XSAhPSAtMTsKICAgIH0KCiAgICBsbCBkZnMoaW50IHUsIGludCB0LCBsbCBwdXNoZWQpIHsKICAgICAgICBpZiAodSA9PSB0IHx8IHB1c2hlZCA9PSAwKQogICAgICAgICAgICByZXR1cm4gcHVzaGVkOwoKICAgICAgICBmb3IgKGludCAmaSA9IGN1clt1XTsgaSA8IChpbnQpZ1t1XS5zaXplKCk7IGkrKykgewogICAgICAgICAgICBFZGdlICZlID0gZ1t1XVtpXTsKCiAgICAgICAgICAgIGlmIChlLmNhcCA8PSAwIHx8IGxldmVsW2Uudl0gIT0gbGV2ZWxbdV0gKyAxKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBsbCB0ciA9IGRmcyhlLnYsIHQsIG1pbihwdXNoZWQsIGUuY2FwKSk7CgogICAgICAgICAgICBpZiAodHIgPT0gMCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgZS5jYXAgLT0gdHI7CiAgICAgICAgICAgIGdbZS52XVtlLnJldl0uY2FwICs9IHRyOwoKICAgICAgICAgICAgcmV0dXJuIHRyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgbGwgbWF4ZmxvdyhpbnQgcywgaW50IHQpIHsKICAgICAgICBsbCBhbnMgPSAwOwoKICAgICAgICB3aGlsZSAoYmZzKHMsIHQpKSB7CiAgICAgICAgICAgIGZpbGwoY3VyLmJlZ2luKCksIGN1ci5lbmQoKSwgMCk7CgogICAgICAgICAgICB3aGlsZSAobGwgcHVzaGVkID0gZGZzKHMsIHQsIElORikpCiAgICAgICAgICAgICAgICBhbnMgKz0gcHVzaGVkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgazsKICAgIGNpbiA+PiBuID4+IGs7CgogICAgdmVjdG9yPGxsPiBhKG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgY2luID4+IGFbaV07CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhZGoobiArIDEpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKCiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIHN0cnVjdCBRdWVyeSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgbGwgYzsKICAgIH07CgogICAgdmVjdG9yPFF1ZXJ5PiBxKGsgKyAxKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICAgICAgY2luID4+IHFbaV0udSA+PiBxW2ldLnYgPj4gcVtpXS5jOwoKICAgIC8vIEJpbmFyeSBsaWZ0aW5nCgogICAgaW50IExPRyA9IDE7CiAgICB3aGlsZSAoKDEgPDwgTE9HKSA8PSBuKQogICAgICAgIExPRysrOwoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdXAobiArIDEsIHZlY3RvcjxpbnQ+KExPRykpOwogICAgdmVjdG9yPGludD4gZGVwdGgobiArIDEpOwoKICAgIC8vIEl0ZXJhdGl2ZSBERlMKCiAgICB2ZWN0b3I8aW50PiBvcmRlcjsKICAgIG9yZGVyLnJlc2VydmUobik7CgogICAgb3JkZXIucHVzaF9iYWNrKDEpOwogICAgdXBbMV1bMF0gPSAxOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClvcmRlci5zaXplKCk7IGkrKykgewogICAgICAgIGludCB1ID0gb3JkZXJbaV07CgogICAgICAgIGZvciAoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaWYgKHYgPT0gdXBbdV1bMF0pCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIHVwW3ZdWzBdID0gdTsKICAgICAgICAgICAgZGVwdGhbdl0gPSBkZXB0aFt1XSArIDE7CgogICAgICAgICAgICBvcmRlci5wdXNoX2JhY2sodik7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGogPSAxOyBqIDwgTE9HOyBqKyspIHsKICAgICAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKICAgICAgICAgICAgdXBbdV1bal0gPSB1cFt1cFt1XVtqIC0gMV1dW2ogLSAxXTsKICAgICAgICB9CiAgICB9CgogICAgYXV0byBsY2EgPSBbJl0oaW50IHUsIGludCB2KSB7CiAgICAgICAgaWYgKGRlcHRoW3VdIDwgZGVwdGhbdl0pCiAgICAgICAgICAgIHN3YXAodSwgdik7CgogICAgICAgIGludCBkID0gZGVwdGhbdV0gLSBkZXB0aFt2XTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMT0c7IGkrKykgewogICAgICAgICAgICBpZiAoZCA+PiBpICYgMSkKICAgICAgICAgICAgICAgIHUgPSB1cFt1XVtpXTsKICAgICAgICB9CgogICAgICAgIGlmICh1ID09IHYpCiAgICAgICAgICAgIHJldHVybiB1OwoKICAgICAgICBmb3IgKGludCBpID0gTE9HIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgaWYgKHVwW3VdW2ldICE9IHVwW3ZdW2ldKSB7CiAgICAgICAgICAgICAgICB1ID0gdXBbdV1baV07CiAgICAgICAgICAgICAgICB2ID0gdXBbdl1baV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB1cFt1XVswXTsKICAgIH07CgogICAgLy8gVGFvIG5vZGUgcGh1ICh1LCBpKQoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gaWQobiArIDEsIHZlY3RvcjxpbnQ+KExPRykpOwoKICAgIGludCBjbnQgPSBuOwoKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewogICAgICAgIGlkW3VdWzBdID0gKytjbnQ7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBMT0c7IGkrKykgewogICAgICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewogICAgICAgICAgICBpZiAoZGVwdGhbdV0gKyAxIDwgKDEgPDwgaSkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlkW3VdW2ldID0gKytjbnQ7CiAgICAgICAgfQogICAgfQoKICAgIC8vIE5vZGUgbmdheQoKICAgIHZlY3RvcjxpbnQ+IGRheShrICsgMSk7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgaSsrKQogICAgICAgIGRheVtpXSA9ICsrY250OwoKICAgIGludCBTID0gKytjbnQ7CiAgICBpbnQgVCA9ICsrY250OwoKICAgIERpbmljIGRpbmljKGNudCk7CgogICAgLy8gT3JpZ2luYWwgbm9kZXMgLT4gVAoKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykKICAgICAgICBkaW5pYy5hZGRFZGdlKHUsIFQsIGFbdV0pOwoKICAgIC8vIEF1eGlsaWFyeSBub2RlcwoKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewogICAgICAgIGRpbmljLmFkZEVkZ2UoaWRbdV1bMF0sIHUsIElORik7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBMT0c7IGkrKykgewogICAgICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewogICAgICAgICAgICBpZiAoIWlkW3VdW2ldKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBpbnQgbWlkID0gdXBbdV1baSAtIDFdOwoKICAgICAgICAgICAgZGluaWMuYWRkRWRnZShpZFt1XVtpXSwgaWRbdV1baSAtIDFdLCBJTkYpOwogICAgICAgICAgICBkaW5pYy5hZGRFZGdlKGlkW3VdW2ldLCBpZFttaWRdW2kgLSAxXSwgSU5GKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUGhhbiByYSBkb2FuIGRpIGxlbiB0dSB1LCBnb20gbGVuIGRpbmggTENBIG5ldSBjYW4KCiAgICBhdXRvIGFkZFBhdGggPSBbJl0oaW50IGQsIGludCB1LCBpbnQgbGVuKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IExPRyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgIGlmIChsZW4gPj4gaSAmIDEpIHsKICAgICAgICAgICAgICAgIGRpbmljLmFkZEVkZ2UoZGF5W2RdLCBpZFt1XVtpXSwgSU5GKTsKCiAgICAgICAgICAgICAgICB1ID0gdXBbdV1baV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIC8vIFNvdXJjZSAtPiBkYXkgLT4gYXV4aWxpYXJ5IG5vZGVzCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgaSsrKSB7CiAgICAgICAgaW50IHUgPSBxW2ldLnU7CiAgICAgICAgaW50IHYgPSBxW2ldLnY7CiAgICAgICAgbGwgYyA9IHFbaV0uYzsKCiAgICAgICAgZGluaWMuYWRkRWRnZShTLCBkYXlbaV0sIGMpOwoKICAgICAgICBpbnQgdyA9IGxjYSh1LCB2KTsKCiAgICAgICAgLy8gdSAtPiBMQ0EgKGNvIGxheSBMQ0EpCiAgICAgICAgYWRkUGF0aChpLCB1LCBkZXB0aFt1XSAtIGRlcHRoW3ddICsgMSk7CgogICAgICAgIC8vIHYgLT4gTENBIChraG9uZyBsYXkgTENBKQogICAgICAgIGFkZFBhdGgoaSwgdiwgZGVwdGhbdl0gLSBkZXB0aFt3XSk7CiAgICB9CgogICAgY291dCA8PCBkaW5pYy5tYXhmbG93KFMsIFQpIDw8ICdcbic7CgogICAgcmV0dXJuIDA7Cn0=