Суть: есть дерево, 50к вершин, нужно от вывода предков относительно корня r1 перейти к выводу предков r2. Задача простая, но я решил написать поиск в глубину, и с ним проблемы.
from sys import stdout
import sys
def dfs(x,parent):
res[x]=parent
for i in a[x]:
if res[i]==-1:
dfs(i,x)
#print (x,parent)
return
sys.setrecursionlimit(50000)
f=open('C://input.txt','r')
#(n,r1,r2)=map(int,raw_input().split())
#parent=map(int,raw_input().split())
(n,r1,r2)=map(int,str(f.readline()).split())
parent=map(int,str(f.readline()).split())
a=map(apply,[list]*(n+1))
for i in xrange(n-1):
j=i+1
if r1<=j:
j+=1
#(Это список смежности)
a[j]+=[parent[i]]
a[parent[i]]+=[j]
res=[-1]*(n+1)
dfs(r2,0)
for i in res:
if i>0:
stdout.write(str(i)+' ')
Забыл добавить, на паскале это отлично работает.