https://www.acmicpc.net/problem/1967
매우 어려웠다.
다른 사람들의 코드를 보고 풀었다.
트리의 순회에 대해 자세히 알아야 할 것 같다.
#include <iostream>
#include<vector>
#include<cstring>
using namespace std;
int N;
vector<pair<int, int>> graph[10001];
int visited[10001]= { 0, };
int result = 0;
int endPoint = 0;
void dfs(int node, int len) {
if (visited[node]) return;
visited[node] = 1;
if (result < len) {
result = len;
endPoint = node;
}
for (int i = 0; i < graph[node].size(); i++) {
dfs(graph[node][i].first, len + graph[node][i].second);
}
}
int main()
{
cin >> N;
int go, to, value;
for (int i = 0; i < N-1; i++) {
cin >> go >> to >> value;
graph[go].push_back(make_pair(to, value));
graph[to].push_back(make_pair(go, value));
}
dfs(1, 0);
result = 0;
memset(visited, 0, sizeof(visited));
dfs(endPoint, 0);
cout << result << '\n';
}
'Baekjoon Review' 카테고리의 다른 글
[Gold 2] 1167번 트리의 지름 (0) | 2023.11.29 |
---|---|
[Gold 5] 1041번 주사위 (0) | 2023.11.28 |
[Gold 5] 11000번 강의실 배정 (0) | 2023.11.27 |
[Gold 5] 2212번 센서 (0) | 2023.11.27 |
[Silver 3] 11659번 구간 합 구하기 4 (0) | 2023.11.27 |