矩阵乘法常用公式 A ∗ B [ i ] [ j ] = ∑ k = 1 n a i k ∗ b k j A*B[i][j] = \sum_{k=1}^n a_{ik} * b_{kj} A∗B[i][j]=∑k=1naik∗bkj
通路的条数
长度为x的通路/链的条数 = G x G^x Gx中的元素
长度为x的回路就是对角线。
可达矩阵
R = b o o l ( I A ∣ ∣ G ∣ ∣ G 2 ∣ ∣ G 3 ∣ ∣ . . . ∣ ∣ G n − 1 ) R = bool(I_A || G || G^2 || G^3 || ... || G^{n-1}) R=bool(IA∣∣G∣∣G2∣∣G3∣∣...∣∣Gn−1)
求强分图
因为互相可达是 r i j & & r j i r_{ij} \&\& r_{ji} rij&&rji,所以求出 R & & R T R\&\&R^T R&&RT,读取半排
强分图中元素的个数
R 2 [ i ] [ i ] R^2[i][i] R2[i][i]
任取顶点i,j与该元素互达就是
r
i
j
&
&
r
j
i
r_{ij} \&\& r_{ji}
rij&&rji。loop(j)if(rij&&rji)sum++
<=> loop(j)sum += rij*rji
。
判断无通路
取可达矩阵的最后一个
关联矩阵
每排都是一个顶点
每列是一个边
出度用1,入度用-1