题号:NC212478
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
柠檬树上柠檬果,柠檬树下你和我❥(^_-)。
这是一棵有 n 个柠檬的柠檬树,由 n-1 条枝条连接而成。
秋天了,柠檬都成熟了, 牛牛和牛妹准备选一些柠檬送给他们的朋友们。
对于每一个朋友,牛妹会选择第 l-r 个柠檬送给朋友。具体的采摘方法是:选取尽可能少的树枝,使得区间内的柠檬**两两连通**。
牛牛负责派送柠檬,但他的朋友太多啦,他实在是忙的上气不接下气,所以他想让您来帮忙。
输入描述:
第一行,输入 n,q ,表示柠檬数和朋友数 。
接下来 n-1 行,每行输入 u 和 v ,表示一条枝条连接了 u 和 v 。
接下来 q 行,每行输入 l 和 r ,表示送给这位朋友第 l-r 个柠檬最少选几根树枝。
输出描述:
输出共 q 行,每行输出选取尽可能少的树枝数。
示例1
输入
复制
5 3
1 2
2 3
3 4
4 5
1 3
1 5
4 5
说明
对于第一组询问,至少需要第1条和第2条树枝,这样两条边1-2和2-3能将1和3苹果连接起来。
对于第二组询问,这4条树枝都必须取,此时四条边能将1到5这5个苹果连接起来。
示例2
输入
复制
5 5
2 1
3 2
2 4
5 4
1 3
4 5
1 3
2 3
2 5
备注:
对于
的数据,
,且
。