/*
 ID: tommatt1
 LANG: JAVA
 TASK: 
*/
import java.util.*;
import java.io.*;
public class cf1281f{
static pair[][] dp;
static pair[] f;
static ArrayList<Integer>[] adj;
static int[] w;
static int[] b;
static int[] sz;
static int n;
	public static void main(String[] args)throws IOException {
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(bf.readLine());
		int ttt=Integer.parseInt(st.nextToken());
		for(int tt=0;tt<ttt;tt++) {
			st=new StringTokenizer(bf.readLine());
			n=Integer.parseInt(st.nextToken());
			int m=Integer.parseInt(st.nextToken());
			st=new StringTokenizer(bf.readLine());
			adj=new ArrayList[n];
			sz=new int[n];
			b=new int[n];
			w=new int[n];
			for(int i=0;i<n;i++) {
				b[i]=Integer.parseInt(st.nextToken());
				adj[i]=new ArrayList<Integer>();
			}
			st=new StringTokenizer(bf.readLine());
			for(int i=0;i<n;i++) {
				w[i]=Integer.parseInt(st.nextToken());
			}
			for(int i=0;i<n-1;i++) {
				st=new StringTokenizer(bf.readLine());
				int a1=Integer.parseInt(st.nextToken());
				int a2=Integer.parseInt(st.nextToken());
				a1--;a2--;
				adj[a1].add(a2);
				adj[a2].add(a1);
			}
			dp=new pair[n][n+1];
			dfs(0,-1);
			out.println(dp[0][m-1].a+(dp[0][m-1].b>0?1:0));
		}
		out.close();
	}
	static void dfs(int x, int p) {
		sz[x]=1;
		dp[x][0]=new pair(0,w[x]-b[x]);
		for(int y:adj[x]) {
			if(y!=p) {
				dfs(y,x);
				f=new pair[n+1];
				for(int i=0;i<sz[x]+sz[y];i++) {
					f[i]=new pair(0,-(1<<60));
				}
				for(int i=0;i<sz[x];i++) {
					for(int j=0;j<=sz[y];j++) {
						pair np=add(dp[x][i],dp[y][j]);
						if(f[i+j].compareTo(np)<0) {
							f[i+j]=np;
						}
					}
				}
				for(int i=0;i<sz[x]+sz[y];i++) {
					dp[x][i]=f[i];
				}
				sz[x]+=sz[y];
			}
		}
		dp[x][sz[x]]=new pair(0,-(1<<60));
		if(p!=-1) {
			for(int i=sz[x];i>0;i--) {
				pair np=new pair(dp[x][i-1].a+(dp[x][i-1].b>0?1:0),0);
				if(dp[x][i].compareTo(np)<0) {
					dp[x][i]=np;
				}
			}
		}
	}
	static pair add(pair p1, pair p2) {
		return new pair(p1.a+p2.a,p1.b+p2.b);
	}
	static class pair implements Comparable<pair>{
		int a;long b;
		public pair(int x,long y) {
			a=x;b=y;
		}
		public int compareTo(pair p) {
			if(a==p.a) {
				if(b>p.b) {
					return 1;
				}
				return -1;
			}
			if(a>p.a) {
				return 1;
			}
			return -1;
		}
	}
}
