Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. n,m,k=map(int, input().split())
  2. tree=[[]for DAVAI_POBYSTREE_RODNOI_POJALYISTA_PROSHY_POMOGI_MNE_ZDAT_ZADACHY_NA_STO_BALLOV_RADI_BOGA
  3. in range(n)]
  4. tin=[0]*n
  5. tout=[0]*n
  6. t=0
  7. level=[0]*n
  8.  
  9. def ancestor(a,b):
  10. return((tin[a]<=tin[b])and(tout[a]>=tout[b]))
  11.  
  12. def dfs(v, p, h):
  13. global t
  14. level[v] = h
  15. tin[v] = t
  16. t += 1
  17. for u in tree[v]:
  18. if u != p:
  19. dfs(u, v, h + 1)
  20. tout[v] = t
  21. t += 1
  22.  
  23. def KEK(tree,a,b):
  24. tree[a-1].append(b-1)
  25. tree[b-1].append(a-1)
  26.  
  27. rebra=list(map(int, input().split()))
  28. for i in range(n-1):
  29. KEK(tree,rebra[i],i+2)
  30. dfs(0,-1,0)
  31. for i in range(m):
  32. u,v=map(int, input().split())
  33. if u==v:
  34. print('yes')
  35. else:
  36. if ancestor(u-1,v-1):
  37. if level[v-1]-level[u-1]<=k:
  38. print('yes')
  39. else:
  40. print('no')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement