大圣诞树¶
背景故事¶
溪湾村长小B在银杉雪原上建造了一棵大圣诞树。从图论上看,它是一棵有 \(N\) 个节点、\(N-1\) 条边的树,节点编号为 \(1,\ldots,N\)。
树上的每条边都挂着一条灯带,每条灯带都有给定的初始亮灭状态。村长打算进行 \(M\) 次操作:每次选择两个节点,把它们之间路径上的所有灯带熄灭;已经熄灭的灯带保持不变。
每次操作后,村长都想知道,树上还亮着的最长连续灯带路径有多长。每条边上的灯带长度视为一。
形式化问题描述¶
有一棵 \(N\) 个结点的无向树,结点编号为 \(1,\ldots,N\) .每条边初始为亮或暗。每次操作给定 \(u,v\) ,将树上唯一的 \(u\) 到 \(v\) 路径的所有边设为暗。
每次操作完成后,输出只经过亮边的简单路径的最大长度,长度按边数计算。允许长度为零的路径;若没有亮边,答案为 \(0\) .\(u=v\) 时不改变任何边。暗边不会重新亮起。
输入格式¶
第一行 N M .接下来 \(N-1\) 行为 u v s ,其中 \(s=1\) 表示亮边,\(s=0\) 表示暗边。再接下来 \(M\) 行,每行 u v 表示一次操作。
输出格式¶
每次操作后输出一行整数,共 \(M\) 行。
样例 1¶
输入¶
5 3
1 2 1
2 3 1
3 4 1
3 5 0
1 1
2 3
1 4
输出¶
3
1
0
样例 2¶
输入¶
5 3
1 2 1
1 3 1
1 4 1
1 5 1
2 3
4 4
4 5
输出¶
2
2
0
样例 3¶
输入¶
2 2
1 2 0
1 2
2 2
输出¶
0
0
样例说明¶
样例 1 的第一次操作不改边,答案为 3;第二次关闭边 2—3 后,最长亮边路径长度为 1。样例 2 展示星形树和重复端点。样例 3 初始就没有亮边。
样例 1 第二次操作后的状态;实线亮,虚线暗。
数据范围与分组¶
\(2\le N\le10^5\) ,\(1\le M\le2\times10^5\) .所有结点编号合法,输入边保证构成一棵树。
规格由 Codex(GPT-6)重新设计:补齐初始灯状态的输入,明确路径长度和空操作。
| 分值 | 额外限制 |
|---|---|
| 20% | \(N\le30,\ M\le100\) |
| 30% | \(N,M\le2000\) |
| 50% | 无额外限制 |
资源限制¶
时间 2.5 秒;内存 1024 MiB。
时限取标准程序正式数据五次运行的最慢中位数的 13 倍,向上取整到 0.5 秒。采用较大倍数,以容纳具有不同用途的补充算法。