//本题题意:首先每个点之间都可达,然后m列举出不可达的,求出最多的生成树方案;
//k这个变量是没用的。
//公式:ans矩阵=度矩阵-建边矩阵;
//度矩阵是当i==j时的,建边矩阵于平时定义可达矩阵相同
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long int
const int MAXN=;
LL A[MAXN][MAXN];
LL B[MAXN][MAXN];
LL determinant(int n)
{
LL res=;
for(int i=;i<=n;i++){
if(!B[i][i]){
bool flag=false;
for(int j=i+;j<=n;j++){
if(B[j][i]){
flag=true;
for(int k=i;k<n;k++){
swap(B[i][k],B[j][k]);
}
res=-res;
break;
}
}
if(!flag)
return ;
}
for(int j=i+;j<=n;j++){
while(B[j][i]){
LL t=B[i][i]/B[j][i];
for(int k=i;k<=n;k++){
B[i][k]=B[i][k]-t*B[j][k];
swap(B[i][k],B[j][k]);
}
res=-res;
}
}
res*=B[i][i];
}
return res;
}
int main()
{
int n,m,k;
while(~scanf("%d%d%d",&n,&m,&k))//这个k没卵用,完全可以无视
{
memset(A,,sizeof(A));
memset(B,,sizeof(B));
for(int i=;i<=m;i++){
int a,b;
scanf("%d%d",&a,&b);
A[a][b]=A[b][a]=;
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i!=j&&!A[i][j]){
B[i][i]++;
B[i][j]=-;//减去邻接矩阵
}
}
}
n=n-;
LL ans=determinant(n);
printf("%lld\n",ans);
}
return ;
}

生成树计数 UVA 10766的更多相关文章

  1. Uva 10766 Organising the Organisation (Matrix_tree 生成树计数)

    题目描述: 一个由n个部门组成的公司现在需要分层,但是由于员工间的一些小小矛盾,使得他们并不愿意做上下级,问在满足他们要求以后有多少种分层的方案数? 解题思路: 生成树计数模板题,建立Kirchhof ...

  2. UVa 10766 Organising the Organisation (生成树计数)

    题意:给定一个公司的人数,然后还有一个boss,然后再给定一些人,他们不能成为直属上下级关系,问你有多少种安排方式(树). 析:就是一个生成树计数,由于有些人不能成为上下级关系,也就是说他们之间没有边 ...

  3. kuangbin带你飞 生成树专题 : 次小生成树; 最小树形图;生成树计数

    第一个部分 前4题 次小生成树 算法:首先如果生成了最小生成树,那么这些树上的所有的边都进行标记.标记为树边. 接下来进行枚举,枚举任意一条不在MST上的边,如果加入这条边,那么肯定会在这棵树上形成一 ...

  4. 【BZOJ1002】【FJOI2007】轮状病毒(生成树计数)

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1766  Solved: 946[Submit][Status ...

  5. SPOJ 104 HIGH - Highways 生成树计数

    题目链接:https://vjudge.net/problem/SPOJ-HIGH 解法: 生成树计数 1.构造 基尔霍夫矩阵(又叫拉普拉斯矩阵) n阶矩阵 若u.v之间有边相连 C[u][v]=C[ ...

  6. Luogu P5296 [北京省选集训2019]生成树计数

    Luogu P5296 [北京省选集训2019]生成树计数 题目链接 题目大意:给定每条边的边权.一颗生成树的权值为边权和的\(k\)次方.求出所有生成树的权值和. 我们列出答案的式子: 设\(E\) ...

  7. Loj 2320.「清华集训 2017」生成树计数

    Loj 2320.「清华集训 2017」生成树计数 题目描述 在一个 \(s\) 个点的图中,存在 \(s-n\) 条边,使图中形成了 \(n\) 个连通块,第 \(i\) 个连通块中有 \(a_i\ ...

  8. 「UVA10766」Organising the Organisation(生成树计数)

    BUPT 2017 Summer Training (for 16) #6C 题意 n个点,完全图减去m条边,求生成树个数. 题解 注意可能会给重边. 然后就是生成树计数了. 代码 #include ...

  9. SPOJ.104.Highways([模板]Matrix Tree定理 生成树计数)

    题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只 ...

随机推荐

  1. centos因为安装花生壳而无法登录系统的问题

    服务器安装 phddns 花生壳 启动失败,一直卡在启动进度条页面. 解决办法 1.按F5查看卡在什么位置, 2.查看解决方法:程序卡住的情况下,直接备份资料后,卸载程序重启就可以了. 3.进入到si ...

  2. c# 删除功能

    html界面: js: controller: app:

  3. 机器学习作业(一)线性回归——Matlab实现

    题目太长啦!文档下载[传送门] 第1题 简述:设计一个5*5的单位矩阵. function A = warmUpExercise() A = []; A = eye(5); end 运行结果: 第2题 ...

  4. layui树形结构更改

    /* * 将json字符串更改为layui.tree所用的数据结构类型,输出仍然为json字符串 * tanghao 7.29 */ function dataToTreeData(oData_str ...

  5. range()用法

    来源:http://www.cnblogs.com/wangwp/p/4535299.html 例子:http://www.cnblogs.com/hongten/p/hongten_python_r ...

  6. 分类问题(一)MINST数据集与二元分类器

    分类问题 在机器学习中,主要有两大类问题,分别是分类和回归.下面我们先主讲分类问题. MINST 这里我们会用MINST数据集,也就是众所周知的手写数字集,机器学习中的 Hello World.sk- ...

  7. js json -> <-object

    1.利用原生JSON对象,将对象转为字符串 var jsObj = {}; jsObj.testArray = [1,2,3,4,5]; jsObj.name = 'CSS3'; jsObj.date ...

  8. Mysql中判断是否存在

    不能像sqlserver一样用if not exists或者exists,应该这样: DECLARE p_count int; set p_count=0; select 1 into p_count ...

  9. jvm(3):JVM调优

    typora-root-url: ./ JVM调优思路 目的:减少full GC次数.减少STW时间(一次GC的时间) 手段: 打印GC日志-XX:+PrintGCDetails -XX:+Print ...

  10. Flink架构(一)- 系统架构

    1. 系统架构 Flink是一个分布式系统,用于有状态的并行数据流处理.也就是说,Flink会分布式地运行在多个机器上.在分布式系统中,常见的挑战有:如何对集群中的资源进行分配与管理.协调进程.数据存 ...