RT,本人刚学矩阵树,照着定理打了一个高斯消元,WA。。。
有无dalao帮忙康一下啊/kel
#include<cstdio>
const int M=25;
int T,n,m;double G[M][M];
inline long long Gauss(int n){
register int i,j,k;long long ans=1;--n;
for(i=1;i<=n;++i){
for(j=i+1;j<=n;++j){
double d=G[j][i]/G[i][i];
for(k=i;k<=n;++k)G[j][k]-=d*G[i][k];
}
ans*=G[i][i];
}
return ans;
}
signed main(){
register int i,j,u,v;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j)G[i][j]=0;
}
for(i=1;i<=m;++i){
scanf("%d%d",&u,&v);
++G[u][u];++G[v][v];
--G[u][v];--G[v][u];
}
printf("%lld\n",Gauss(n));
}
}