路径查询
测试数据来自 system/2102
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【题目描述】
给出一棵边带权的无根树,然后是一个询问列表。每次询问一对结点 \((u,v)\) 之间的最近公共祖先 和 \(u,v\) 之间的路径长度和路径的最大边权值。
\(z=LCA(u,v)\),表示 \(z\) 同时是 \(u\) 和 \(v\) 的祖先,并且是深度最大的一个祖先。一个结点可以是自身的祖先。例如下图中,结点 5 是 (2,5) 的 \(LCA\)。
【输入格式】
第 1 行:2 个整数 \(n\) 和 \(m\),\(n\) 表示树中结点的数量,接点编号为 \(1..n\),\(m\) 表示询问的次数
接下来的 \(n-1\) 行,每行三个整数 \(a,b,c\),表示 \(a,b\) 之间有一条无向边,这条边的权值为 \(c(c≤1000)\);
接下来 \(m\) 行,每行两个整数,表示一个询问的一对结点\((u,v)\)的编号\((1≤u,v≤n)\)。
【输出格式】
共 \(m\) 行,每行输出一个询问\((u,v)\)的结果,包含 2 个整数:第 1 个数表示 \(u,v\) 的路径上权值最大的边的长度(若 \(u==v\),则输出0)。第 2 个数表示 \(u,v\) 的路径长度(若 \(u==v\),则输出 0)。
【输入输出样例】
Input
5 4
2 3 1
5 2 2
5 1 2
5 4 3
1 5
4 2
2 3
1 3
Output
2 2
3 5
1 1
2 5
【数据限制】
对于 \(100\%\) 的数据,\(1≤n≤300000\),\(1≤m≤300000\),\(1≤w≤1000\)
【来源】
Mr.he