如果你采用了如下 dp 方式:
void dfs(int nod) { if (is_key[nod]) { is_key[nod] = false; return min_dis[nod]; } else { for (...) { dfs(to); ... } } edge[nod].clean(); }
请注意,如果遇到关键点就返回最小边权,会导致没有遍历完整个虚树,于是 dfs 过程中清空遇到的点就清空不完,于是就寄了
请每次输出答案后遍历关键点集合依次清空。