#include #include #include #include using namespace std; #define repf(i,a,b) for(int i=(a);i<=(b);i++) #define mem(x) memset(x,0,sizeof(x)) typedef long long ll; #define N 10000 int n,m; int parent[150]; struct node { int s,e; }a[N]; int find(int x) { if(parent[x]==x) return x; else return parent[x]=find(parent[x]); //返回的是find(parent[x])!!! } void merge(int x, int y) { x = find(x), y = find(y); //寻找x,y的根 if (x == y) return; //如果是一个根不用操作,否则根据秩的大小进行合并操作 parent[x] = y; } int main() { int t; cin>>t; while(t--) { cin>>n; int i,j,k; int ans=0; int flag=1; for(i=1;i<=n+1;i++) scanf("%d %d",&a[i].s,&a[i].e); for(i=1;i<=n+1;i++) { for(j=i;j<=n+1;j++) { flag=1; for(k=1;k<=n;k++) parent[k]=k; for(k=1;k<=n+1;k++) { if(k==i||k==j) continue; if(find(a[k].s)!=find(a[k].e)) merge(a[k].s,a[k].e); } for(k=1;k<=n;k++) { if(find(k)!=find(1)) { flag=0; break; } } if(flag==1) ans++; } } printf("%d\n",ans); } }