概述
uva10766
#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define mp push_back
typedef long long ll;
int n,m,k;
int conn[65][65];
ll g[65][65];
ll gauss()
{
ll ret = 1;
for(int i=1;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
while(g[j][i] != 0)
{
ll tt = g[i][i] / g[j][i];
for(int k=i;k<n;k++)
{
g[i][k] = g[i][k] - tt * g[j][k];
}
for(int k=i;k<n;k++)
{
swap(g[i][k],g[j][k]);
}
ret = -ret;
}
}
if(g[i][i] == 0) return 0;
ret = ret * g[i][i];
}
if(ret < 0) return -ret;
return ret;
}
int main()
{
//freopen("in.txt","r",stdin);
while(~scanf("%d%d%d",&n,&m,&k))
{
memset(conn,0,sizeof(conn));
for(int i=0;i<m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
u --;
v --;
conn[u][v] = 1;
conn[v][u] = 1;
}
memset(g,0,sizeof(g));
for(int i=0;i<n;i++)
{
int degree = 0;
for(int j=0;j<n;j++)
{
if(i!=j && !conn[i][j])
{
degree ++;
g[i][j] = -1;
}
}
g[i][i] = degree;
}
printf("%lldn",gauss());
}
}
最后
以上就是懵懂老师为你收集整理的【生成树计数】【矩阵树】【模板】的全部内容,希望文章能够帮你解决【生成树计数】【矩阵树】【模板】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复