Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MOD = 1000000007
- def mat_mult(A, B, n):
- C = [[0] * n for _ in range(n)]
- for i in range(n):
- for j in range(n):
- for k in range(n):
- C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % MOD
- return C
- def mat_pow(A, k, n):
- res = [[1 if i == j else 0 for j in range(n)] for i in range(n)]
- while k > 0:
- if k % 2 == 1:
- res = mat_mult(res, A, n)
- A = mat_mult(A, A, n)
- k //= 2
- return res
- def count_paths(n, k, adj_matrix):
- result_matrix = mat_pow(adj_matrix, k, n)
- return result_matrix[0][0]
- n, k = map(int, input().split())
- adj_matrix = [list(map(int, input().split())) for _ in range(n)]
- print(count_paths(n, k, adj_matrix))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement