Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- struct node{
- ll a;
- vector< node* > vec;
- };
- ll dfs(node* head, ll x){
- ll sum = head->a;
- for(auto i:head->vec){
- sum+=dfs(i,x);
- }
- return max((-1)*x, sum);
- }
- int main(){
- ll t,n,x,i,u,v,ans;
- cin>>t;
- while(t--){
- cin>>n>>x;
- node* tree[n+1];
- for(i=1;i<=n;i++){
- tree[i]=new node();
- cin>>tree[i]->a;
- }
- for(i=0;i<n-1;i++){
- cin>>u>>v;
- tree[u]->vec.push_back(tree[v]);
- }
- ans = dfs(tree[1], x);
- cout<<ans<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement