최소공통조상. [1761]
[1. 문제 설명] https://www.acmicpc.net/problem/1761 [2. 풀이 접근] 구해야 하는 노드 쌍의 개수가 1개라면, 단순한 접근으로 풀 수 있지만, 최대 1만개의 노드 쌍의 거리를 구해야 하므로, 단순한 접근으로는 시간 초과 발생이 매우 높다. 트리가 한쪽 방향으로 스큐되어 있다고 생각해보면, Leaf 에서 Root 까지 올라갈 때, 하나의 노드쌍에 대해서 O(H) 걸림 쿼리 개수는 총 M 개 단순한 접근 시 전체 시간복잡도는 O(HM) => H 는 최대 4만, M 은 최대 1만, 즉, LCA 를 구할 때, 좀 더 빠른 방법으로 구해야 한다. Sparse table 을 전처리 과정에서 구한 뒤, LCA 를 찾아가고, 그 과정에서 이동 거리를 구한다면, 쿼리 하나 당 거의 상..
최단 경로(벨만-포드) 문제 솔루션
[1. 개요] 시간 복잡도 O(VE) 모든 Edge 의 relax 를 |V| 번 만큼 반복, 마지막 |V| 번째에서 relax 가 발생한다면, 음수 사이클이 있다는 것이다. 함정 벨만-포드 수행 후 어떤 노드 u 까지 가는 경로가 존재하는가? upper[u] != INF 가 아니라고 판단하면 안된다. 그래프가 아래와 같이, 완전히 연결되지 않았다면, 시작점과 연결되지 않은 상태에서, 음수 사이클이 있다면, 적당히 큰 값 M 에 대한 어떤 연산 결과가 참이라면 u 까지 가는 경로가 있다고 판단해야함. => 이 값은 문제 조건에 따라 다름... => weight 조건이 [0, K] 이고 (음수 weight 와 별개로.. 양수 weight 에 대해서만), => 전체 edge 개수가, L 개라면, => M=KL..