Notice
Recent Posts
Link
정화 코딩
[C++] 트리의 지름 (백준 1967번) 본문
https://www.acmicpc.net/problem/1967
#include <iostream>
#include <vector>
using namespace std;
vector<vector<pair<int, int>>> g;
vector<bool> vst;
int maxc = 0;
void dfs(int cur, int cnt) {
vst[cur] = true;
if (cnt > maxc) maxc = cnt;
for (auto nxt: g[cur]) {
if (!vst[nxt.first]) dfs(nxt.first, cnt + nxt.second);
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
g = vector<vector<pair<int, int>>>(n + 1);
for (int i = 0; i < n - 1; i++) {
int a, b, c;
cin >> a >> b >> c;
g[a].emplace_back(b, c);
g[b].emplace_back(a, c);
}
for (int i = 1; i < n + 1; i++) {
vst = vector<bool>(n + 1, false);
dfs(i, 0);
}
cout << maxc << '\n';
}
오랜만에 푸는 듯한 dfs 문제... 각 노드에 대해서 전부 dfs를 실행시키면서 maxc를 갱신시키면 되는 간단한 문제였다. 주의할 점은 각 노드별로 dfs 실행할 때마다 vst를 초기화해야 한다는 것이다. (AC)
'PS' 카테고리의 다른 글
[C++] 별 찍기 - 11 (백준 2448번) (0) | 2024.11.23 |
---|---|
[C++] 특정한 최단 경로 (백준 1504번) (0) | 2024.11.21 |
[C++] 숨바꼭질 3 (백준 13549번) (0) | 2024.11.14 |
[C++] 곱셈 (백준 1629번) (2) | 2024.11.13 |
[C++] 웜홀 (백준 1865번) (1) | 2024.11.12 |
Comments