336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

트리의 지름을 구하는 문제


어느 지점에서 시작해도 가장 먼 노드가 시작노드가 되며, 이때 1-BFS 를 사용하고,

두번째, 시작노드를 구했다면, 2-BFS 를 사용하여 "트리의 지름" 을 구한다. 


총 2번의 BFS를 사용하여 결과를 구할 수 있다.


먼저, 모든 입력을 받는다.

(1) 임의의 노드를 선택한다. (코드에선 1을 지정)

(2) (1)에 선택한 노드를 방문 표시한 후 Q에 넣는다.

(3) 1-BFS

1) Q에서 노드(here)를 꺼낸다. 

2) 꺼낸 노드(here)와 연결되어 있고, 방문하지 않은 노드(there.first)를 방문한다.

3) 방문한 노드의 이동 비용을 update 한 후, 노드방문표시, Q에 넣는다.

4) Q에 넣는 노드가 도달비용이 최대라면 max_node , max_cost를 업데이트 한다.

(4) 2-BFS 

(3) 의 과정을 완료하면, 시작노드를 구한 것이다. 시작노드부터 BFS를 하여 가장 먼 위치에 있는 노드와의 비용을 구한다.

(5) 비용을 출력한다.



'PSNote > Problem Solving' 카테고리의 다른 글

[BOJ-12852]1로만들기2  (0) 2017.07.17
[BOJ-1463]1로만들기  (0) 2017.07.17
[BOJ-11653]소인수분해  (0) 2017.07.17
[BOJ-14582]오늘도졌다  (0) 2017.07.17
[BOJ-14581]팬들에게 둘러싸인 홍준  (0) 2017.07.17

+ Recent posts