看了一上午炸树狂魔vfk的讲解还是没看懂QAQ
于是只好记结论了,反正结论很是简单粗暴。
开long long写高斯消元写挂了TAT(貌似是除法的问题)
然而开double过了?
不是很懂答案范围。。。。。
#include
#include
#include
#include
using namespace std;
double a[15][15];
double calc(int n){
double ans=1;
for(int i=1;i<=n;i++){
int j;
for(j=i;j<=n;j++)
if(a[j][i])break;
if(j>n)return 0;
for(int k=i;k<=n;k++)
swap(a[i][k],a[j][k]);
for(j=i+1;j<=n;j++){
double x=a[j][i]/a[i][i];
for(int k=i;k<=n;k++)
a[j][k]-=x*a[i][k];
}
ans*=a[i][i];
}
return fabs(ans);
}
int main(){
//freopen("a.in","r",stdin);
int T;scanf("%d",&T);
while(T--){
int n,m;scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
while(m--){
int u,v;scanf("%d%d",&u,&v);
a[u][u]++;a[v][v]++;
a[u][v]--;a[v][u]--;
}
printf("%.0lf\n",calc(n-1));
}
return 0;
}