트리를 번 정점을 루트로 두고, 를 정점 의 깊이, 라 하자.
로봇이 에서 출발할 때의 배터리가 이고 경로 위의 정점 에 도착했다면, 그때의 배터리는
이다. 따라서 와 사이 경로의 최대 높이를 라 하면
이고, 는 에서 로 이동하는 순서에서 높이 를 처음 갖는 정점이다.
간선을 지날 때 높이가 정확히 변하고 이므로
이다. 다음 정수 변수를 정의하자.
그러면 이고 이다.
부모가 , 자식이 인 간선은 다음 두 차분 제약과 동치이다.
기록 를 생각하자. 먼저 가 와 사이 경로 위에 있어야 한다.
, 이므로
오른쪽 값이 홀수이면 모순이다. 그렇지 않으면 두 등식을 각각 서로 반대 방향의 두 차분 제약으로 추가할 수 있다.
에서 에 도착하기 전의 정점 에서는 보다 먼저 배터리가 이 되면 안 되므로 여야 한다. 따라서
이다.
를 지난 뒤의 정점 에서는 이면 된다. 따라서
이다.
보조 변수 을 두고 으로 해석한다. 은 , 은 과 으로 표현한다. 이제 모든 조건은
꼴의 차분 제약이다.
문제는 기록 하나가 경로 위의 많은 정점에 제약을 만든다는 점이다. 이를 정점마다 직접 추가하면 제약 수가 이 된다. Bellman-Ford까지 그대로 수행하면 충분히 빠르지 않다.
Bellman-Ford를 동기식으로 생각하자. 현재 거리를 , 다음 라운드의 거리를 라 하면, 처음에 로 둔 뒤 모든 제약 에 대해
를 수행한다. 실제 변수는 뿐이므로 총 번의 라운드만 확인하면 된다.
기록에서 생기는 경로 제약은 모두 어떤 정점 에서 경로 위 정점들로 향한다. 가중치는 도착 정점의 깊이 짝홀에만 의존한다. 따라서 하나의 경로 제약을 두 값 로 나타낼 수 있다. 깊이가 짝수인 정점 에는 , 홀수인 정점에는 을 후보로 준다.
한 라운드에서 이러한 경로 relax를 HLD로 한꺼번에 처리한다.
HLD의 한 체인에 속한 정점들은 체인의 머리부터 아래쪽 순서로 연속하게 놓인다. 일반적인 트리 경로를 HLD로 분해하면 개의 완전한 체인 prefix
와 마지막 한 체인 안의 구간 하나로 나타낼 수 있다.
완전한 체인 prefix에는 세그먼트 트리 갱신을 하지 않는다. 그 prefix의 끝점 에 을 저장한다. 모든 기록을 처리한 뒤 각 체인을 아래에서 위로 한 번 훑으면서 지금까지 본 값의 최솟값을 유지하면, 모든 prefix 갱신을 에 각 정점으로 전파할 수 있다. prefix 갱신 하나의 비용은 이다.
마지막 한 체인 안의 일반 구간만 lazy 세그먼트 트리에 range chmin을 한다. 각 세그먼트 트리 노드에도 깊이 짝홀용 두 최솟값을 저장한다. 갱신 하나는 이고, 모든 갱신이 끝난 뒤 태그를 리프까지 한 번 전파하면 에 모든 정점의 후보를 얻는다.
따라서 트리 경로 하나의 relax는 HLD에서 체인을 건너는 횟수 과 마지막 구간 갱신 을 합쳐 에 처리된다. 한 기록에서 필요한 경로는 이전과 이후 두 개뿐이다. 를 제외한 각 경로의 끝점은 LCA와 binary lifting으로 미리 구할 수 있다.
한 Bellman-Ford 라운드의 비용은 다음과 같다.
따라서 전체 시간 복잡도는
이고, binary lifting을 포함한 메모리 복잡도는 이다.
초기 거리를 모두 으로 두면 모든 변수로 가중치 의 간선을 갖는 슈퍼 소스를 둔 것과 같다. 번째 라운드에서도 값이 감소한다면 음수 사이클이 존재하므로 답은 없다. 그 전에 더 이상 감소하지 않으면 최종 거리 에 대해
로 높이를 복원한다.
증명
배터리가 라는 식에서, 이동 중 배터리가 음수가 되지 않기 위한 최소 는 경로 최대 높이와 의 차이다. 이 최소 배터리로 배터리가 인 정점은 정확히 경로 최대 높이를 갖는 정점이다. 따라서 기록은 에서의 두 높이 차 등식, 이전의 엄격한 상한, 이후의 일반 상한과 정확히 동치이다.
Solution written by GPT5.6
깊이와 높이의 짝홀이 같으므로 모든 유효한 높이는 정수 로 유일하게 표현된다. 반대로 간선에 대한 두 차분 제약을 만족하는 에서 를 만들면 부모와 자식의 높이 차는 정확히 이다. 과 도 각각 높이의 비음수성과 을 보장한다.
한 동기식 Bellman-Ford 라운드에서 경로 제약 가 만드는 후보는 이전 라운드의 와 해당 간선 가중치의 합이다. HLD 자료구조는 이 후보들의 최솟값을 경로에 포함된 정점에만 전달한다. 완전한 체인 prefix를 아래에서 위로 전파하는 과정은 각 prefix가 덮는 모든 정점에 정확히 같은 값을 전달하며, 마지막 체인 구간의 세그먼트 트리 range chmin도 같은 동작을 한다. 따라서 압축된 한 라운드의 결과는 모든 경로 간선을 실제로 나열하여 완화한 결과와 완전히 같다.
결국 알고리즘은 원래 차분 제약 그래프에 대한 동기식 Bellman-Ford와 동일하다. 차분 제약이 만족 가능할 필요충분조건은 음수 사이클이 없는 것이다. 음수 사이클이 없으면 안정된 거리 가 모든 제약을 만족하며, 으로 평행 이동하여 얻은 와 복원한 가 모든 원래 조건을 만족한다.