2018.09.16 spoj104Highways (矩阵树定理)
传送门
第一次写矩阵树定理。
就是度数矩阵减去邻接矩阵之后得到的基尔霍夫矩阵的余子式的行列式值。
这个可以用高斯消元O(n3)" role="presentation" style="position: relative;">O(n3)O(n3)求。
代码:
#include<bits/stdc++.h>
#define eps 1e-5
#define N 20
using namespace std;
int n,m,c[N][N],a[N][N];
double matrix[N][N];
inline void gauss(){
for(int i=1;i<=n;++i){
int tmp=i;
for(int j=i+1;j<=n;++j)if(fabs(matrix[j][i])>fabs(matrix[tmp][i]))tmp=j;
if(tmp!=i)for(int j=1;j<=n;++j)swap(matrix[i][j],matrix[tmp][j]);
if(fabs(matrix[i][i])<eps){puts("0");return;}
for(int j=i+1;j<=n;++j){
double ttmp=matrix[j][i]/matrix[i][i];
for(int k=1;k<=n;++k)matrix[j][k]-=matrix[i][k]*ttmp;
}
}
double ret=1;
for(int i=1;i<=n;++i)ret*=matrix[i][i];
printf("%.0lf\n",ret);
}
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
int main(){
int T=read();
while(T--){
memset(c,0,sizeof(c)),memset(a,0,sizeof(a)),memset(matrix,0,sizeof(matrix));
n=read(),m=read(),--n;
for(int i=1;i<=m;++i){
int u=read(),v=read();
if(!a[u][v])++c[u][u],++c[v][v],++a[u][v],++a[v][u];
}
for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)matrix[i][j]=c[i][j]-a[i][j];
gauss();
}
return 0;
}
2018.09.16 spoj104Highways (矩阵树定理)的更多相关文章
- 【bzoj1002】[FJOI2007]轮状病毒 矩阵树定理+高精度
题目描述 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病 ...
- CSU 1805 Three Capitals(矩阵树定理+Best定理)
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1805 题意: A和B之间有a条边,A和G之间有b条边,B和G之间有c条边.现在从A点出发走遍所 ...
- [专题总结]矩阵树定理Matrix_Tree及题目&题解
专题做完了还是要说两句留下什么东西的. 矩阵树定理通俗点讲就是: 建立矩阵A[i][j]=edge(i,j),(i!=j).即矩阵这一项的系数是两点间直接相连的边数. 而A[i][i]=deg(i). ...
- UOJ 75 - 【UR #6】智商锁(矩阵树定理+随机+meet-in-the-middle)
题面传送门 一道很神的矩阵树定理+乱搞的题 %%%%%%%%%%%%%%% vfk yyds u1s1 这种题目我是根本想不出来/kk,大概也就 jgh 这样的随机化带师才能想到出来吧 首先看到生成树 ...
- [spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)
In some countries building highways takes a lot of time... Maybe that's because there are many possi ...
- BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]
传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看 ...
- bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 559 Solved: 325[Submit][Sta ...
- 【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满 ...
- 2019.01.02 bzoj2467: [中山市选2010]生成树(矩阵树定理)
传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> # ...
随机推荐
- leetcode231
public class Solution { public bool IsPowerOfTwo(int n) { )) == && n > ); } } https://lee ...
- Java Collection.sort 排序升序, 降序问题
不多说,记住2点, 直接上代码(下面是降序): package mall; import java.util.ArrayList; import java.util.Collections; impo ...
- Delegate 改变指向
import mx.utils.Delegate; nowWordSound.onSoundComplete =Delegate.create(this, playOver); function pl ...
- 10 python 封装----@property的用法
1.基本概念 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A ...
- websocket使用
兼容性介绍 : https://caniuse.com/#search=websockets var websocket = null; //判断当前浏览器是否支持WebSocket if ('Web ...
- JAVA NIO学习记录1-buffer和channel
什么是NIO? Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不 ...
- 使用robotium对android应用进行自动化测试
所需要的环境: 1.eclipse 2.android development tools(ADT) 3.software develoment kit(SDK) 4.JDK 5.robotium 1 ...
- Game2048
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 解决SpringBoot中webScocket不能注入bean的问题
最近在做websocket聊天,但是遇到一个问题,就是在websocket的服务中要调用Service层的东西.首先我想到的是通过@Autowire注解来实现bean的注入.但是进过测试发现,注入的b ...
- python 安装scikit!!!
首先,吐槽一下,真的是折腾好几天,一会更新这个,一会更新那个,总是各种奇葩问题诸如此类: cannot import check-build pip有新版本,需要更新(黄字) 其中scipy出错最多, ...