알고리즘/알고리즘 이론, 템플릿

인접행렬 분할거듭제곱

b1ackhand 2023. 6. 8. 09:36
vector<vector<ll>> multiply(const vector<vector<ll>>& a, const vector<vector<ll>>& b) 
{
	vector<vector<ll>> ret(10, vector<ll>(10));

	for (int i = 1; i <= 8; i++) 
	{
		for (int j = 1; j <= 8; j++) 
		{
			ll elem = 0;
			for (int k = 1; k <= 8; k++) 
			{
				elem += (a[i][k] * b[k][j]) % MOD;
			}
			ret[i][j] = elem % MOD;
		}
	}
	return ret;
}

while (true)
{
    if (D == 0)
        break;

    if (D % 2 == 1)
    {
        cache = multiply(cache, graph);
        D -= 1;
    }
    graph = multiply(graph, graph);
    D /= 2;
}

https://blog.naver.com/PostView.naver?blogId=gt7461&logNo=110151975370&redirect=Dlog&widgetTypeCall=true&topReferer=https%3A%2F%2Fstack07142.tistory.com%2F119&directAccess=false 

 

인접행렬과 인접행렬의 거듭제곱

  (문제) 아래 그래프의 꼭짓점 P에서 R까지 3개의 변을 거쳐가는 모든 방법의 수는?   ...

blog.naver.com

엄청 잘만드신 템플릿

https://kth990303.tistory.com/183

 

'알고리즘 > 알고리즘 이론, 템플릿' 카테고리의 다른 글

분할 정복을 이용한 거듭제곱  (0) 2023.07.17
가젯 템플릿  (0) 2023.06.18
스프라그 그런디  (0) 2023.06.05
이분매칭  (0) 2023.06.02
MST - Kruskal  (0) 2023.04.03