//先找一个美丽的树,然后遍历树找节点,分析是否符合条件。
//画几个图,思考下。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int n=1e6+11;
int a,b,c[n],d,l,r,k,w,an;
vector<int>t[n];
void dfs(int x,int y)
{if(c[x]*2<c[y]){k=x;}for(int v:t[x]){if(v!=y){dfs(v,x);}}
}
void dfs1(int x,int y)
{for(int v:t[x]){if(v!=y){if(c[v]*2<c[x]){w=1;}dfs1(v,x);}}
}
void dfs2(int x,int y)
{for(int v:t[x]){if(v!=y){if(c[v]<=c[x]*2){an++;dfs2(v,x);}}}
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a;while(a--){cin>>b;an=0;for(int i=1;i<=b;i++){t[i].clear();}for(int i=1;i<=b;i++){cin>>c[i];}for(int i=1;i<=b-1;i++){cin>>l>>r;t[l].push_back(r);t[r].push_back(l);}k=1;w=0;dfs(1,0);dfs1(k,0);if(w==1){cout<<"0"<<endl;}else{an=1;dfs2(k,0);cout<<an<<endl;}}
}