Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n,m,k=map(int, input().split())
- tree=[[]for DAVAI_POBYSTREE_RODNOI_POJALYISTA_PROSHY_POMOGI_MNE_ZDAT_ZADACHY_NA_STO_BALLOV_RADI_BOGA in range(n)]
- tin=[0]*n
- tout=[0]*n
- t=0
- level=[0]*n
- def ancestor(a,b):
- return((tin[a]<=tin[b])and(tout[a]>=tout[b]))
- def dfs(v, p, h):
- global t
- level[v] = h
- tin[v] = t
- t += 1
- for u in tree[v]:
- if u != p:
- dfs(u, v, h + 1)
- tout[v] = t
- t += 1
- def KEK(tree,a,b):
- tree[a-1].append(b-1)
- tree[b-1].append(a-1)
- rebra=list(map(int, input().split()))
- for i in range(n-1):
- KEK(tree,rebra[i],i+2)
- dfs(0,-1,0)
- for i in range(m):
- u,v=map(int, input().split())
- if u==v:
- print('yes')
- else:
- if ancestor(u-1,v-1):
- if level[v-1]-level[u-1]<=k:
- print('yes')
- else:
- print('no')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement