题号:NC212812
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
每个人都有自己的人生坐标,也有对未来的美好期望。
家庭可能对我们有不同的预期,社会也可能会赋予我们别样的角色。
在不断变化的现实生活中,个人与家庭、社会之间的落差或错位难免会产生。
对此,你有怎样的体验与思考?写一段代码,谈谈自己的看法。
牛牛生活在一棵树上,这个树有 n 个节点。
每个人有 4 个参数
我们定义一个人自己的人生坐标为一个集合 S,S 是从树上的节点

到节点

的最短路径经过的节点构成的集合。
而家庭的预期、社会赋予的角色则是另一个集合 T,T 是从树上的节点

到节点

的最短路径经过的节点构成的集合。
定义树上两个点的距离为它们的最短路径经过的边数。
我们定义个人与家庭、社会之间的落差值为 S 中的任意一个节点和 T 中任意一个节点的距离之和,即
)
,dis(x,y) 表示 x,y 的距离。
牛牛作为人生导师,需要帮助 q 个人计算他们的个人与家庭、社会之间的落差值。
但是这个计算量太大了,于是牛牛找到了你。
输入描述:
第一行两个正整数 n, q 表示树的大小和牛牛需要帮助计算的人数。
后面 n-1 行每行两个正整数数
,表示
之间有一条边相连。
后面 q 行每行 4 个正整数

,表示一个人的参数。
输出描述:
q 行,每行一个数,第 i 行表示第 i 个人个人与家庭、社会之间的落差值。
示例1
输入
复制
7 4
1 2
2 3
2 4
4 5
1 6
6 7
1 2 6 7
3 5 4 7
3 7 5 6
1 1 1 1
备注:
n,q <= 300000