矩阵树定理的模板题
代码(我也不知道对不对,因为一直judging)
//By AcerMo
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
long long a[500][500];
void gauss()
{
long long ans=1;
for (int i=1;i<n;i++)
{
for (int j=i+1;j<n;j++)
while (a[j][i])
{
long long mul=a[i][i]/a[j][i];
for (int k=i;k<n;k++)
a[i][k]-=(mul*a[j][k]),
swap(a[j][k],a[i][k]);
ans*=-1;
}
if (!a[i][i]){puts("0");return ;}
ans*=a[i][i];
}
cout<<abs(ans)<<endl;
return ;
}
int main()
{
int t,x,y;scanf("%d",&t);
while (t--)
{
memset(a,0,sizeof(a));
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=a[y][x]=-1;
a[x][x]++;a[y][y]++;
}
gauss();
}
return 0;
}