Advertisement
Guest User

Untitled

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