用01BFS跑最短路后的答案的字典序是最大的,可以证明反转之后不仅满足约束条件,而且变成了字典序最小。 disi>disi−1dis_i>dis_{i-1}disi>disi−1 就是反转了 000 和 111 之后的答案。
其实可以直接求最长路,在进行01BFS时,把边权为 000 的边push_front(),−1-1−1 的边push_back(),这样求出来的答案就是字典序最小的了。
push_front()
push_back()