首页 > 其他分享 >行列式求法和矩阵树定理

行列式求法和矩阵树定理

时间:2024-10-03 15:33:10浏览次数:6  
标签:int 定理 矩阵 求法 行列式 权值 --

1.矩阵树定理
无向图,有n个点,如果说i-j之间有连边,那么矩阵g[i][j]=g[j][i]=-1(i-j之间的边的数量),否则值为0
矩阵上对角线上的值为该点的度数,g[i][i]=d[i];
生成树个数:任选i,去掉i行i列之后的行列式的值
生成树的权值=边权的乘积,所有生成树的权值之和?
i-j之间右边,g[i][j]=-w[i][j]之和
g[i][i]=所有w[i][j]之和

时间复杂度:n^3
logW

int g[N][N];

int calc(int n){
	int ans=1;
	for(int i=1;i<=n;i++) 
		for(int j=1;j<=n;j++) g[i][j]%=mod;
	
	for(int i=1;i<=n;i++)
	 for(int j=i+1;j<=n;j++){
	 	int x=i,y=j;
	 	while(g[x][i]){
	 		int t=g[y][i]/g[x][i];
	 		for(int k=i;k<=n;k++){
	 			g[y][k]=(g[y][k]-t*g[x][k])%mod;
			 }
			swap(x,y);
		 }
		 if(x==i){
		 	for(int k=i;k<=n;k++) swap(g[i][k],g[j][k]);
		 	ans=-ans;
		 }
		 if(g[i][i]==0){
		 	return 0;
		 }
		 ans=ans*g[i][i]%mod;
	 }
	 if(ans<0)ans+=mod;
	 return ans;
	 
}

void slove(){
	int n,m;cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;cin>>u>>v;
		g[u][v]--,g[v][u]--;
		g[u][u]++,g[v][v]++;
	}
	cout<<calc(n-1)<<endl;//删掉第n行,第n列 
} 

标签:int,定理,矩阵,求法,行列式,权值,--
From: https://www.cnblogs.com/mendax-Z/p/18445725

相关文章

  • P1939 矩阵加速
    P1939矩阵加速已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。对于\(100\%\)的数据\(1\leqT\leq100\),\(1\leqn\leq2\times......
  • 手把手实现完善矩阵类(分数数据类型)
    矩阵类功能:矩阵变换分数数据类型使得精度丢失率极低加,减,数乘,矩阵相乘,转置,幂次,初等变换伴随矩阵,逆矩阵,矩阵行列式的值,后方增添/删除矩阵,矩阵的秩获取并输出齐次/非齐次线性方程组的解向量演示:矩阵输出,初等行变换后输出,解向量输出实现矩阵类,如何适应不同数据类型?模板?对......
  • 14、图-邻接矩阵
    1、邻接矩阵的定义和初始化#include<stdio.h>#include<malloc.h>#include<assert.h>#defineDefault_Vertices_Size10//顶点#defineTchar//无向不带权的图typedefstructGraphMtx{intMaxVertices;//最大的顶点数intNumVertices;//真实的顶点数......
  • 华为OD机试2024年E卷-矩阵匹配[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )
    题目描述从一个N*M(N≤M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述输入矩阵要求:1≤K≤N≤M≤150输入格式:NMKN*M矩阵输出描述N*M的矩阵中可以选出M!/N!种组合数组,每个组合......
  • 算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II
    209.长度最小的子数组状态:没写出来->确认自己的想法是对的之后写出来了!!!初始思路:因为子数组是连续的,所以可以采用滑动窗口,我把这个窗口设置为左闭右闭,所以初始左右边界为0。之后先移动右指针,使得找到第一个和大于等于target的子数组,记录其长度,之后再移动左指针一位,再找第二个......
  • leetcode74 搜索二维矩阵
    leetcode74搜索二维矩阵思路可以使用二叉搜索,首先先看标准的闭区间二叉搜索代码publicintqSearch(int[]a,intl,intr,inttarget){intmid=(l+r)/2;if(l>r)returnl;//终止条件,区间为空if(a[mid]==target)returnmid;elseif(a[mid]<target)retur......
  • numpy矩阵操作
    numpy官方文档:https://numpy.org/doc/stable/pipinstallnumpyimportnumpyasnp矩阵定义$$\left[\begin{matrix}1&2\3&4\end{matrix}\right]$$a=np.array([[1,2],[3,4]])reshapehttps://numpy.org/doc/stable/reference/generated/numpy.res......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II 、区间和、开发
    209.长度最小的子数组此题注重理解,同时我将res一开始初始化为sums的长度加一(因为不可能为此长度)INT32_MAX是一个常量,代表32位有符号整数的最大值classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){inti=0,j=0;//i为起始位置,j为......
  • 特殊矩阵范数在半定意义下(Lowner序)的最值性
    半定序我们知道对于任意两个实数\(a,b\),其必然满足以下三种关系中的一种\(a>b,或a=b,或者a<b\),这其实是一种全序关系,即任意两个实数之间都可以比较大小。但是若我们考虑矩阵的话,就不存在这种全序关系,但是我们可以刻画一种偏序关系,就如我们下文想要考察的半定关系,若矩阵\(......
  • 超全的百度AI产品矩阵:15款神器如何重塑我们的未来?
    大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300+款以上的AI应用工具。关注科技及大模型领域对社会的影响10年+。关注我一起驾驭AI工具,拥抱AI时代的到来。探秘百度AI的奇妙世界:15款神器如何重塑我们的未来?亲爱的朋友们,你们有没有想过,科技的力量究......