题目描述
给出一棵 n 个节点的树,结点标号从 1 到 n 。
定义树上两点 a,b 的距离 d(a,b) 是最小的非负整数 k ,满足存在结点序列 v0,v1,...,vk ,满足 v0=a,vk=b ,且对于 0≤i≤k−1 有 vi 和 vi+1 之间在树上有一条边相连。
有 m 个询问,每个询问包含参数 p0,d0,p1,d1 ,求:
d(p0,a)≤d0∑d(p1,b)≤d1∑d(a,b)输入格式
第一行一个整数 n ,表示树的节点数目。
接下来一行 n−1 个整数 f2,f3,...,fn ,依次表示 i 和 fi ( 1≤fi≤i−1 )之间有一条边。
接下来一行一个整数 m ,表示询问数目。
接下来 m 行依次描述所有询问:每行四个证书 p0,d0,p1,d1 ( 1≤p0,p1≤n,0≤d0,d1≤n−1 )描述一组询问。
保证 1≤n≤105,1≤m≤105 。
输出格式
共 m 行,依次回答各组询问:每行输出一行一个整数表示这组询问的答案。
提示
版权信息
来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2019。
题解等资源可在 https://github.com/wangyurzee7/THUPC2019 查看。