#include #include using namespace std; int t,n,k,a,b; vector>g; vectordp; int rez=0,sol,cnt; bool vizitat[100005]; void dfs_dinamica(int m, int nod) { dp[nod]=1; vizitat[nod]=1; for(auto vecin:g[nod]) { if(vizitat[nod]==0) { dfs_dinamica(m,vecin); dp[nod]+=dp[vecin]; } } if(dp[nod]>=m) { dp[nod]=0; rez++; } } void caut_bin() { int st=1,dr=n,m; rez=0; sol=0; while(st<=dr) { m=(st+dr)/2; cnt=0; for(int i=1; i<=n; i++) { vizitat[i]=0; } dfs_dinamica(m,1); if(rez>=k) {c st=m+1; sol=m; } else { dr=m-1; } } } int main() { cin>>t; for(int j=1; j<=t; j++) { cin>>n>>k; g.resize(n+1); dp.resize(n+1); g=vector> {n+1}; dp=vector {n+1}; for(int i=1; i<=n-1; i++) { cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } caut_bin(); cout<