#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long int power(long long int x, long long int n, long long int m) {
  long long int res = 1;
  while (n > 0) {
    if (n & 1) res = (res * x) % m;
    x = (x * x) % m;
    n = n >> 1;
  }
  return res;
}
long long int modInverse(long long int n, long long int p) {
  return power(n, p - 2, p);
}
long long int nCr(long long int n, long long int r, long long int p) {
  if (r == 0) return 1;
  long long int fac[n + 1];
  fac[0] = 1;
  for (long long int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i % p;
  return ((fac[n] * modInverse(fac[r], p) % p) % p * modInverse(fac[n - r], p) %
          p) %
         p;
}
long long int DFS(long long int s,
                  vector<pair<long long int, long long int> > g[],
                  vector<long long int> &cnt, long long int n,
                  long long int par) {
  if (g[s].size() == 1 && s > 1) return 1;
  long long int k = 0;
  for (long long int i = 0; i < g[s].size(); i++) {
    if (g[s][i].first == par) continue;
    cnt[g[s][i].second] += DFS(g[s][i].first, g, cnt, n, s);
    k += cnt[g[s][i].second];
  }
  return k;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int t;
  cin >> t;
  while (t--) {
    long long int n, s, k = 0, res = 0;
    cin >> n >> s;
    vector<pair<long long int, long long int> > g[n + 1];
    set<pair<long long int, long long int> > st;
    vector<long long int> w(n - 1), cnt(n - 1, 0), diff(n - 1);
    for (long long int i = 0; i < n - 1; i++) {
      long long int u, v;
      cin >> u >> v >> w[i];
      g[u].push_back({v, i});
      g[v].push_back({u, i});
    }
    DFS(1, g, cnt, n, -1);
    for (long long int i = 0; i < n - 1; i++) {
      diff[i] = cnt[i] * w[i] - cnt[i] * (w[i] / 2);
      k += cnt[i] * w[i];
      st.insert({diff[i], i});
    }
    while (k > s) {
      long long int i = st.rbegin()->second;
      st.erase(prev(st.end()));
      k -= diff[i];
      w[i] /= 2;
      diff[i] = cnt[i] * w[i] - cnt[i] * (w[i] / 2);
      st.insert({diff[i], i});
      res++;
    }
    cout << res << endl;
  }
  return 0;
}
