Advertisement
Danila_lipatov

Yandex_24_AI_task_7

Dec 1st, 2024
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.72 KB | None | 0 0
  1. MOD = 1000000007
  2.  
  3. def mat_mult(A, B, n):
  4.     C = [[0] * n for _ in range(n)]
  5.     for i in range(n):
  6.         for j in range(n):
  7.             for k in range(n):
  8.                 C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % MOD
  9.     return C
  10.  
  11. def mat_pow(A, k, n):
  12.     res = [[1 if i == j else 0 for j in range(n)] for i in range(n)]
  13.     while k > 0:
  14.         if k % 2 == 1:
  15.             res = mat_mult(res, A, n)
  16.         A = mat_mult(A, A, n)
  17.         k //= 2
  18.     return res
  19.  
  20. def count_paths(n, k, adj_matrix):
  21.     result_matrix = mat_pow(adj_matrix, k, n)
  22.     return result_matrix[0][0]
  23.  
  24. n, k = map(int, input().split())
  25. adj_matrix = [list(map(int, input().split())) for _ in range(n)]
  26.  
  27. print(count_paths(n, k, adj_matrix))
  28.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement