SPOJ104&&洛谷SP104highways

矩阵树定理的模板题

代码(我也不知道对不对,因为一直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;
}


猜你喜欢

转载自blog.csdn.net/acerandaker/article/details/80877575
104