Submission #41261925
Source Code Expand
import sys
def input():
return sys.stdin.readline().rstrip()
# EDPC R - Walk
N, K = map(int, input().split())
A = [list(map(int, input().split())) for i in range(N)]
# 隣接リスト
G = [[] for _ in range(N)]
for i in range(N):
for j in range(N):
if A[i][j]:
G[i].append(j)
MOD = 10**9+7
# 長さK
# 単純有向グラフ
# ダブリング?
# 計算量は最大で2500*2500*60 3*10**8 間に合わない?
# dp[i][j][k]jから2**i回移動するとkにいる数
H = len(bin(K)[2:])
dp = [[[0]*N for i in range(N)] for _ in range(H)]
#初期化
for j in range(N):
for v in G[j]:
dp[0][j][v] += 1
for i in range(H-1):
for j in range(N):
for k in range(N):
for l in range(N):
# jからkに移動
dp[i+1][j][k] = (dp[i+1][j][k]+dp[i][j][l]*dp[i][l][k])%MOD
#print(dp)
S = bin(K)[2:][::-1]
prev = [1]*N
for i in range(H):
if S[i] == "0":continue
cur = [0]*N
for j in range(N):
for k in range(N):
cur[k] += prev[j]*dp[i][j][k]
cur[k] %= MOD
prev = cur
print(sum(prev)%MOD)
Submission Info
| Submission Time | |
|---|---|
| Task | R - Walk |
| User | te1229 |
| Language | PyPy3 (7.3.0) |
| Score | 100 |
| Code Size | 1154 Byte |
| Status | AC |
| Exec Time | 185 ms |
| Memory | 75596 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 0_00, 0_01, 0_02, 0_03, 0_04, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 0_00 | AC | 132 ms | 61620 KiB |
| 0_01 | AC | 48 ms | 61576 KiB |
| 0_02 | AC | 51 ms | 61628 KiB |
| 0_03 | AC | 52 ms | 61400 KiB |
| 0_04 | AC | 71 ms | 71080 KiB |
| 1_00 | AC | 49 ms | 61540 KiB |
| 1_01 | AC | 52 ms | 61780 KiB |
| 1_02 | AC | 60 ms | 66268 KiB |
| 1_03 | AC | 181 ms | 75300 KiB |
| 1_04 | AC | 58 ms | 67452 KiB |
| 1_05 | AC | 182 ms | 75152 KiB |
| 1_06 | AC | 59 ms | 68372 KiB |
| 1_07 | AC | 185 ms | 75188 KiB |
| 1_08 | AC | 185 ms | 75084 KiB |
| 1_09 | AC | 185 ms | 75500 KiB |
| 1_10 | AC | 176 ms | 74924 KiB |
| 1_11 | AC | 176 ms | 75328 KiB |
| 1_12 | AC | 163 ms | 75272 KiB |
| 1_13 | AC | 185 ms | 75360 KiB |
| 1_14 | AC | 175 ms | 75180 KiB |
| 1_15 | AC | 179 ms | 74980 KiB |
| 1_16 | AC | 184 ms | 75596 KiB |
| 1_17 | AC | 185 ms | 75004 KiB |