生成树的计数 模板 Matrix-Tree定理
来源:互联网 发布:淘宝不搜血滴子上一句 编辑:程序博客网 时间:2024/06/16 15:38
SPOJ104(Highways)
题目地址:
http://www.spoj.com/problems/HIGH/
题目大意:
*一个有n座城市的组成国家,城市1至n编号,其中一些城市之间可以修建高速公路;
*需要有选择的修建一些高速公路,从而组成一个交通网络;
*计算有多少种方案,使得任意两座城市之间恰好只有一条路径;
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int N=15;typedef long long LL;int degree[N];LL C[N][N];LL det(LL a[][N],int n)//生成树计数:Matrix-Tree定理{ LL ret=1; for(int i=1; i<n; i++) { for(int j=i+1; j<n; j++) while(a[j][i]) { LL t=a[i][i]/a[j][i]; for(int k=i; k<n; k++) a[i][k]=(a[i][k]-a[j][k]*t); for(int k=i; k<n; k++) swap(a[i][k],a[j][k]); ret=-ret; } if(a[i][i]==0) return 0; ret=ret*a[i][i]; } if(ret<0) ret=-ret; return ret;}int main(){ int tcase; scanf("%d",&tcase); while(tcase--) { memset(degree,0,sizeof(degree)); memset(C,0,sizeof(C)); int n,m; scanf("%d%d",&n,&m); int u,v; while(m--) { scanf("%d%d",&u,&v); u--; v--; C[u][v]=C[v][u]=-1; degree[u]++; degree[v]++; } for(int i=0; i<n; ++i) C[i][i]=degree[i]; printf("%lld\n",det(C,n)); } return 0;}
0 0
- 生成树的计数 模板 Matrix-Tree定理
- 生成树的计数Matrix-Tree定理
- 生成树的计数Matrix-Tree定理
- 生成树的计数Matrix-Tree定理
- 生成树计数-Matrix-Tree定理
- 生成树计数-Matrix-Tree定理
- 生成树计数(Matrix-Tree定理)
- 生成树计数 - Matrix Tree定理
- 生成树的计数 Matrix-Tree(矩阵树)定理
- 生成树计数--矩阵树定理(Matrix-Tree定理)
- UVA10766(Organising the Organisation)生成树计数-Matrix-Tree定理
- 最小生成树计数(Kruskal+Matrix-Tree定理)
- 【生成树计数】Matrix-tree定理学习笔记
- 生成树计数 matrix-tree定理学习笔记
- SPOJ104(Highways) 生成树计数 Matrix-Tree定理
- SPOJ HIGH Highways(生成树计数,Matrix-Tree定理)
- SPOJ HighWays 生成树计数 模板题(Matrix-Treed定理)
- SPOJ HIGH 104 Highways 图的生成树计数 (Matrix-Tree定理)
- whereis - locate the binary, source, and manual page files for a command
- java实现简单的排序算法:冒泡排序、选择排序、插入排序
- [2016/8/21][Linux] ls命令输出结果解读
- 随谈——关于java服务器配置
- 单点登录(Single Sign On)
- 生成树的计数 模板 Matrix-Tree定理
- #368 (Div. 2) C. Pythagorean Triples
- Expression Add Operators
- 淘宝如何跨域获取Cookie分析
- hdu3461Code Lock
- LRU Cache
- ImageButton属性
- 大数据竞赛平台——Kaggle 入门篇
- getPath、getAbsolutePath区别