Coding Is My Life

코딩은 인생

c++ 백준 문제 풀이

[백준/C++][(1761번)정점들의 거리]

산기대 컴공 2020. 11. 19. 23:35
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