순간을 성실히, 화려함보단 꾸준함을

[ boj : 18126 ] 너구리 구구 본문

알고리즘,SQL/백준,BOJ

[ boj : 18126 ] 너구리 구구

폭발토끼 2021. 7. 6. 22:56

https://www.acmicpc.net/problem/18126

 

18126번: 너구리 구구

텔레토비 동산에 사는 너구리 구구는 입구, 거실, 주방, 안방, 공부방, 운동실, 음악실, 음식 창고 등 N개의 방을 가지고 있다. 입구를 포함한 모든 방은 1부터 N까지의 번호가 있고, 입구는 1번이

www.acmicpc.net

문제 : 구구가 입구에서 가장 멀리 떨어져있는 곳에다가 아이스크림을 숨키려고 한다. 이때 그 길이를 구하자

해설 : 그냥 dfs 한번 돌려서 각 동작마다 최대값을 return 시켜주게끔 하면 됩니다. 주의할 점은 '오버플로' 잘 보세요.

#include<bits/stdc++.h>

using namespace std;
using ll = long long;
vector<pair<int, ll>> v[5010];
ll dfs(int x, int p);

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);

	int n;
	int a, b, c;
	cin >> n;

	for (int i = 0; i < n - 1; i++) {
		cin >> a >> b >> c;
		v[a].push_back({ b,c });
		v[b].push_back({ a,c });
	}
	cout<<dfs(1,-1);
	return 0;
}
ll dfs(int x,int p)
{
	ll ret = 0;
	for (int i = 0; i < v[x].size(); i++) {
		if (v[x][i].first == p)continue;
		ret = max(ret, dfs(v[x][i].first,x) + v[x][i].second);
	}
	return ret;
}