https://codeforces.com/problemset/problem/2053/E

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define lowbit(x)  x&(-x)
using ll = long long;
using pii = pair<int, int>;
const double PI = acos(-1);
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
vector<ll> v[N];
bool st[N];
int in[N];//表示点的度
int adjv[N];//表示叶子结点的邻接点的个数
int ex[N];//表示*q的个数,实际要-1,因为q到*q,q占据的一个位置
void solve() {
	ll n;cin>>n;
	for(int i=1;i<=n;i++){
		v[i].clear();
		in[i]=0;
		adjv[i]=0;
		ex[i]=0;
		st[i]=0;
	}
	for(int i=1;i<n;i++){
		ll x,y;cin>>x>>y;
		in[x]++;
		in[y]++;
		v[x].push_back(y);
		v[y].push_back(x);
	}
	ll leaf=0;
	for(int i=1;i<=n;i++){
		if(in[i]==1) {
			leaf++;
			for(auto t:v[i]){
				adjv[t]=1;
				if(!st[t]){
				for(auto x:v[t]){
					if(in[x]>1){
//						cout<<x<<" "<<in[x]<<endl;
						ex[t]++;
					}
				}
				st[t]=1;
				}
			}
		}
	}
//	for(int i=1;i<=n;i++)
//		cout<<i<<" "<<ex[i]<<endl;
	ll ans=leaf*(n-leaf);
	ll  p=0;
	for(int i=1;i<=n;i++){
		if(in[i]!=1&&adjv[i]!=1) p++;//p可能的个数
	}
	for(int i=1;i<=n;i++){
		ans+=max((ex[i]-1)*p,(ll)0);
	}
	cout<<ans<<endl;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	
	int T = 1;
	cin>>T;
	while (T--) {
		solve();
	}
	
	return 0;
}