模版:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=100+10;
const ll inf=1e10;
const int maxm=5e5+10;
const ld eps=1e-12;
int t,n,m;
struct matrix{
ll ma[maxn][maxn];
void pre(){memset(ma,0,sizeof(ma));}
}du;
void gauss(){
n--;
ll ans=1;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
while(du.ma[j][i]){
ll tmp=du.ma[i][i]/du.ma[j][i];
for(int k=i;k<=n;k++) du.ma[i][k]-=tmp*du.ma[j][k],swap(du.ma[i][k],du.ma[j][k]);
ans=-ans;
}
}
ans*=du.ma[i][i];
}
cout<<abs(ans)<<endl;
}
signed main(){
cin>>t;
while(t--){
cin>>n>>m;
du.pre();
for(int i=1;i<=m;i++){
int a1,a2;cin>>a1>>a2;
du.ma[a1][a1]++;du.ma[a2][a2]++;
du.ma[a1][a2]--;du.ma[a2][a1]--;
}
gauss();
}
return 0;
}
- 模版不是double类型的矩阵,精度可能有问题。
- long double版的会神秘地wa掉。