题面 解析 首先有一个结论, 对一个点\(x\)有贡献的城市 肯定在它到离它较远的直径的端点的链上. 假设离它较远的端点是\(S\), 如果有一个点\(u\)不在\(x\)到\(S\)的链上, 却对\(x\)有贡献, 那就说明\(x\)到\(u\)的距离比\(x\)到\(S\)要长, 但根据直径的定义,这是不可能的. 接下来就要考虑怎么算答案了. 首先找出直径的两个端点, 分别作为根统计一次. 维护一个栈,栈里面是可能对\(x\)有贡献的点. 然后考虑长链剖分,求出长链和次长链. 那么对于重儿子