博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 10766 Organising the Organisation(矩阵树定理)
阅读量:5291 次
发布时间:2019-06-14

本文共 1282 字,大约阅读时间需要 4 分钟。

题意:

给出n, m, k。表示n个点,其中m条边不能直接连通,求生成树个数。

 

思路:

这也算个裸题,把可以连接的边连接起来,然后矩阵树计算一下即可。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std;13 typedef long long ll;14 typedef pair
pll;15 const int INF = 0x3f3f3f3f;16 const int maxn=60+5;17 18 int n,m,root;19 int unable[maxn][maxn];20 long double C[maxn][maxn];21 22 long double Gauss()23 {24 for(int k=1; k<=n; k++) //k表示当前行数,因为行数与列数一样,所以这里k也代表了列数25 {26 int max_r=k;27 for(int i=k+1;i<=n;i++)28 if(fabs(C[i][k])>fabs(C[max_r][k])) max_r=i;29 if(C[max_r][k]==0) return 0; //有一列为0,行列式的值必为030 if(max_r!=k)31 {32 for(int j=k;j<=n;j++)33 swap(C[k][j],C[max_r][j]);34 }35 for(int i=k+1;i<=n;i++)36 {37 long double tmp=C[i][k]/C[k][k];38 for(int j=k;j<=n;j++)39 C[i][j]-=tmp*C[k][j];40 }41 }42 long double ans=1;43 for(int i=1;i<=n;i++) ans*=C[i][i]; //化为三角阵后计算主对角线元素乘积44 ans=fabs(ans);45 return ans;46 }47 48 int main()49 {50 //freopen("in.txt","r",stdin);51 while(~scanf("%d%d%d",&n,&m,&root))52 {53 memset(unable,0,sizeof(unable));54 memset(C,0,sizeof(C));55 for(int i=0;i

 

转载于:https://www.cnblogs.com/zyb993963526/p/7356597.html

你可能感兴趣的文章
Win7中不能调试windows service
查看>>
T-SQL触发器,限制一次只能删除一条数据
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
理解运算符重载 4
查看>>
快来熟练使用 Mac 编程
查看>>
第二周
查看>>
断言简介
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
Scripting Java #3:Groovy与invokedynamic
查看>>
2014-04-21-阿里巴巴暑期实习-后台研发-二面经验
查看>>
数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列
查看>>
使用pager进行分页
查看>>
吐医疗器械研发可配置性需求的槽点
查看>>
UVA - 1592 Database
查看>>
机器翻译评价指标 — BLEU算法
查看>>
机器学习基石(9)--Linear Regression
查看>>
Min Stack
查看>>