过了#5,其它点MLE
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
struct data{
int to,next;
}e[N];
int k,pre[N],m,n,T,u,v,sum;
void add(int u,int v){
e[++k]={v,pre[u]};
pre[u]=k;
}
int dfs(int x,int fa){
int ans=1;
for(int i=pre[x];i;i=e[i].next){
int to=e[i].to;
if(to==fa)continue;
int xx=dfs(to,x);
if(xx==-1)return -1;
ans+=xx;
}
if(ans<m)return ans;
if(ans==m){sum++;return 0;}
return -1;
}
int main(){
cin>>T;
while(T--){
cin>>n>>m;
memset(pre,-1,sizeof(pre));
sum=0,k=0;
for(int i=1;i<n;i++){
cin>>u>>v;
add(u,v);
}
if(n%m!=0){
puts("NO");
continue;
}
//输入
dfs(1,0);
//初始化
if(sum==(n/m))puts("YES");
else puts("NO");
}
return 0;
}