728x90
문제
https://www.acmicpc.net/problem/1761
1761번: 정점들의 거리
첫째 줄에 노드의 개수 N이 입력되고 다음 N-1개의 줄에 트리 상에 연결된 두 점과 거리를 입력받는다. 그 다음 줄에 M이 주어지고, 다음 M개의 줄에 거리를 알고 싶은 노드 쌍이 한 줄에 한 쌍씩
www.acmicpc.net
문제해결
1.벡터에 정점과 가중치를 입력받는다.
2.DFS를 통해서 각 노드들마다 부모와 깊이를 알아낸다.
3.LCA알고리즘을 실행한다
3-1. 만약 두 노드가 같으면 출력한다
3-2. 두 노드가 같지 않고 깊이가 같으면 두 노드 다 깊이-1로 이동한다.
3-3 한 노드가 다른노드보다 깊이가 크면 큰 노드가 깊이-1로 이동한다.
4. 두 노드가 같아 질때까지 반복한다.
코드
ide.goorm.io/shared_files/sksj0111_fdcaefbb66aa200201435bf2dd65aa471605796486050
1761.cpp - goorm
구름IDE에서 공유된 소스코드를 볼 수 있는 페이지입니다.
ide.goorm.io:443
728x90
'c++ 백준 문제 풀이' 카테고리의 다른 글
[백준/C++][순열 사이클(10451번)] (0) | 2020.12.02 |
---|---|
[백준/C++][경로 찾기(11403번)] (0) | 2020.11.30 |
[백준/C++][(1197번)최소 스패닝 트리] (0) | 2020.11.19 |
[백준/C++][(1922번) 네트워크 연결] (0) | 2020.11.19 |
[백준/C++] 요세푸스 문제 0 (11866번) (0) | 2020.10.30 |