백준 18126 너구리 구구
2023. 3. 2. 15:02ㆍ코딩 공부 연습
반응형
백준 18126 너구리 구구
- 오늘은 너구리 구구 문제를 풀었다. 알고리즘 스터디에서 분류가 트리였는데, 트리 문제를 어떤 식으로 풀어야 할 지 몰라서 그냥 DFS 로 풀었다.
- 맨날 풀던 DFS 문제처럼 단순하게 생각하면, 말단 리프 까지 도달했을 때의 경로의 합이 가장 큰 것을 출력하기만 하면 되는 거였다. 다 풀었는데, 계속 틀렸다고 나왔다.
#include <iostream>
#include <vector>
using namespace std;
vector<pair<int,long long>> v[5002];
int visited[5002] = {0,};
long long max_val = 0;
void dfs(int x, long long p)
{
for (int i = 0; i < v[x].size(); i++)
{
if (visited[v[x][i].first] == 0 )
{
visited[v[x][i].first] = 1;
dfs(v[x][i].first, p + v[x][i].second);
}
}
max_val = max(max_val, p);
return;
}
int main()
{
int n;
cin>>n;
for (int i =0; i < n-1; i++)
{
int a,b;
long long c;
cin>>a>>b>>c;
v[a].push_back({b,c});
v[b].push_back({a,c});
}
//visited[1] = 1;
dfs(1, 0);
cout<< max_val<<"\n";
return 0;
}
이게 틀린 코드 였는데, 첫번째 시작점을 방문체크를 안해서 방문한 지점을 한 번 더 거치는 경우가 나왔던 거였다. 사실 단순한 DFS 문제였는데 오랜만에 풀고 기억이 가물가물해서 이렇게 실수를 한 거 같다.
저 문제에서 주석 처리된
visited[1] = 1;
만 다시 주석을 풀어주면 문제가 쉽게 해결된다! WOW
'코딩 공부 연습' 카테고리의 다른 글
백준 9934 완전 이진 트리 (0) | 2023.03.04 |
---|---|
백준 15900 나무 탈출 (1) | 2023.03.03 |
백준 2302 극장 좌석 (1) | 2023.02.26 |
백준 2410 2의 멱수의 합 (0) | 2023.02.24 |
백준 1967 트리의 지름 (1) | 2023.02.24 |