Pagini recente » Cod sursa (job #2893591) | Cod sursa (job #274041) | Cod sursa (job #423946) | Cod sursa (job #1294152) | Cod sursa (job #2276445)
import math
infile = open("stramosi.in", "r")
outfile = open("stramosi.out", "w")
def readnm():
line = infile.readline().split()
return int(line[0]), int(line[1])
def readtree():
line = list(map(int, infile.readline().split()))
for i in range(n):
a[i][0] = line[i]
def get_anc(x, y):
if x == 0:
return 0
if y == 0:
return x
p = int(math.log(y, 2))
k = math.pow(2, p)
return get_anc(a[x - 1][p], y-k)
def solve():
for i in range(n):
for j in range(1,19):
if a[i][j-1]:
a[i][j] = a[a[i][j-1]-1][j-1]
for i in range(m):
line = list(map(int, infile.readline().split()))
outfile.write(str(get_anc(line[0], line[1])) + "\n")
infile.close()
outfile.close()
n, m = readnm()
a = [[0 for j in range(19)] for i in range(n)]
readtree()
solve()