본문 바로가기

트리2

백준 1967 c++ -[PlusUltraCode] [필자 사고] 트리의 지름문제이다. 처음보면 당황할 수 있지만 한번만 이해하면 쉽게 풀 수 있는 문제이다. 트리의 지름이란 임의의 두점을 선택했을때 가장 거리가 긴 노드간의 길이를 말한다. 지름을 구하기 위해서는 다음과 같다. 1. 임의의 노드 하나를 선택하여 가장 거리가 먼 노드를 구한다. 2. 가장 거리가 먼 노드에서 다시 시작하여 가장 거리가 먼 노드를 또 구한다. 3. 2번째로 구한 가장 거리가 먼 노드의 길이가 지름의 길이이다. 문제를 해결하는 알고리즘은 dfs 다익스트라 등등 많이 있고 필자는 다익스트라를 이용하여 해결했다. [소스 코드] #include #include #include #include using namespace std; typedef pair Node; vector Arr;.. 2024. 2. 20.
백준 1167 c++ - [PlusUltraCode] [필자 사고] 트리의 지름을 구하라는 문제이다. 먼저 트리의 지름이란 임의이 두 점을 골랐을 때 가장 거리가 긴 길이가 트리의 지름이다. 먼저 임의이 아무 지점에서 각 지점에서의 최단 거리를 구한다. 최단거리중 거리가 가장 긴 IDX를 골라 시작점으로 다시 최단 거리를 구하게 되면 가장 거리가 긴 지점이 나오게 된다. #include #include #include using namespace std; typedef pair Node; const int MAX_NUM = 10000000; vector Arr; vector visited; vector pathLoad; int N; priority_queue pq; void Input() { cin >> N; Arr.resize(N + 1); pathLoa.. 2024. 2. 20.