Skip to content

Instantly share code, notes, and snippets.

@CleitonDeLima
Created August 26, 2015 16:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save CleitonDeLima/f1eeb1b5d6ac1fcf717a to your computer and use it in GitHub Desktop.
Save CleitonDeLima/f1eeb1b5d6ac1fcf717a to your computer and use it in GitHub Desktop.
MAX = 0
P = 10000
def identidade(matriz):
for i in range(MAX):
for j in range(MAX):
matriz[i][j] = int((i == j))
def multmat(matrizA, matrizB, matrizC):
for i in range(MAX):
for j in range(MAX):
k = 0
matrizC[i][j] = 0
while k < MAX:
matrizC[i][j] += matrizA[i][k] * matrizB[k][j]
matrizC[i][j] %= P
k += 1
def expbin(matrizA, n, matrizB):
matrizC = [[0 for i in range(MAX)] for j in range(MAX)]
if n == 0:
identidade(matrizB)
return
if n & 1:
expbin(matrizA, n-1, matrizC)
multmat(matrizC, matrizA, matrizB)
return
expbin(matrizA, n>>1, matrizC)
multmat(matrizC, matrizC, matrizB)
while True:
try:
nave, bilhete = (int(x) for x in input().split(' '))
S, T = (int(x) for x in input().split(' '))
MAX = nave
m = [[0 for i in range(MAX)] for j in range(MAX)]
res = [[0 for i in range(MAX)] for j in range(MAX)]
for i in range(nave):
l = input().split(' ')
for j in range(4):
x = int(l[j])
m[i][x-1] += 1
expbin(m, bilhete, res)
print(res[S-1][T-1]%P)
except:
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment