#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl "\n"
#define int long long
const int N = 1e5 + 5;
int n, x;
int a[N], sum[N];
vector<int> g[N];
int dfs(int u, int par)
{
int sum = a[u];
for(auto &it:g[u])
{
if(it == par)
continue;
sum += dfs(it, u);
}
sum = max(sum, -x);
return sum;
}
int32_t main()
{
IOS;
int t;
cin>>t;
while(t--)
{
memset(sum, 0, sizeof(sum));
cin>>n>>x;
for(int i=1;i<=n;i++)
{
cin>>a[i];
g[i].clear();
}
for(int i=1;i<=n-1;i++)
{
int u, v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
int ans = dfs(1, 0);
cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKI2RlZmluZSBJT1MgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIGludCBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gMWU1ICsgNTsKCmludCBuLCB4OwppbnQgYVtOXSwgc3VtW05dOwp2ZWN0b3I8aW50PiBnW05dOwoKaW50IGRmcyhpbnQgdSwgaW50IHBhcikKewoJaW50IHN1bSA9IGFbdV07Cglmb3IoYXV0byAmaXQ6Z1t1XSkKCXsKCQlpZihpdCA9PSBwYXIpCgkJCWNvbnRpbnVlOwoJCXN1bSArPSBkZnMoaXQsIHUpOwoJfQoJc3VtID0gbWF4KHN1bSwgLXgpOwoJcmV0dXJuIHN1bTsKfQoKaW50MzJfdCBtYWluKCkKewoJSU9TOwoJaW50IHQ7CgljaW4+PnQ7Cgl3aGlsZSh0LS0pCgl7CQoJCW1lbXNldChzdW0sIDAsIHNpemVvZihzdW0pKTsKCQljaW4+Pm4+Png7CgkJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJewoJCQljaW4+PmFbaV07CgkJCWdbaV0uY2xlYXIoKTsKCQl9CgkJZm9yKGludCBpPTE7aTw9bi0xO2krKykKCQl7CgkJCWludCB1LCB2OwoJCQljaW4+PnU+PnY7CgkJCWdbdV0ucHVzaF9iYWNrKHYpOwoJCQlnW3ZdLnB1c2hfYmFjayh1KTsKCQl9CgkJaW50IGFucyA9IGRmcygxLCAwKTsKCQljb3V0PDxhbnM8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==