#include #define rep(i, n) for(int i = 0; i < (int)(n); i ++) #define rep1(i, n) for(int i = 1; i <= (int)(n); i ++) #define MP make_pair using namespace std; typedef long long LL; typedef pair PII; const int INF = 0x3f3f3f3f; int absv(int x) { return x < 0 ? -x : x; } int n, coef[105]; vector G[105]; int siz[105]; int dp[105][105]; int tmp[3][105]; void dfs(int v, int par) { siz[v] = 1; rep(i, G[v].size()) { int u = G[v][i]; if(u == par) continue; dfs(u, v); siz[v] += siz[u]; } memset(tmp, INF, sizeof(tmp)); tmp[0][0] = 0; rep(i, G[v].size()) { int u = G[v][i]; if(u == par) continue; for(int j = 2; j >= 0; j --) for(int k = j != 0 ? n : 0; k >= j; k --) { tmp[j][k] += dp[u][0]; if(j == 2) for(int l = k; l >= 1; l --) tmp[2][k] = min(tmp[2][k], tmp[1][k - l] + dp[u][l]); else if(j == 1) tmp[1][k] = min(tmp[1][k], tmp[0][0] + dp[u][k]); } } dp[v][0] = tmp[0][0]; rep(i, n) { dp[v][i + 1] = tmp[0][0] + coef[i + 1] - i; for(int j = 0; j <= i; j ++) dp[v][i + 1] = min(dp[v][i + 1], tmp[1][i - j] + coef[j]); dp[v][i + 1] = min(dp[v][i + 1], tmp[2][i]); } for(int i = 0; i <= n; i ++) dp[v][i] += absv(i - siz[v]); } void solve() { scanf("%d", &n); rep1(i, n) G[i].clear(); rep(i, n - 1) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } dfs(1, 0); printf("%d\n", dp[1][n]); } int main() { rep1(i, 100) coef[i] = coef[i >> 1] + coef[(i - 1) >> 1] + i - 1; int T; scanf("%d", &T); while(T --) solve(); return 0; }