题解:
生成树模板题。
题外话:
我好悲哀,现在只会做一些模板题,一遇到经典的题就一脸蒙,而且还看不懂,哎。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long int
const int MAXN=15;
LL B[MAXN][MAXN];
LL determinant(int n)
{
LL res=1;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
while(B[j][i])
{
LL t=B[i][i]/B[j][i];
for(int k=i;k<=n;k++)
{
B[i][k]=B[i][k]-B[j][k]*t;
swap(B[i][k],B[j][k]);
}
res=-res;
}
}
if(!B[i][i]) return 0;
res=res*B[i][i];
}
return res;
}
int main()
{
int n,m,t;
scanf("%d",&t);
while(t--)
{
memset(B,0,sizeof(B));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
B[u][u]++,B[v][v]++,B[u][v]=-1,B[v][u]=-1;
}
LL ans=determinant(n-1);
printf("%lld\n",ans);
}
}