https://www.acmicpc.net/problem/1167
기존에 못풀었었던 문제와 똑같은 문제다.
단, 입출력 형식이 조금 다른 것 외엔 똑같았다.
#include <iostream>
#include<vector>
#include<cstring>
using namespace std;
int V;
int endPoint = 0;
vector<pair<int, long>> graph[100001];
int visited[100001] = { 0, };
long result = 0;
void dfs(int node, long 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() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> V;
for (int i = 0; i < V; i++) {
int go, to, value;
cin >> go;
while (true) {
cin >> to;
if (to == -1) break;
cin >> 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 5] 2293번 동전 1 (0) | 2024.02.06 |
---|---|
[Silver 1] 1629번 곱셈 (0) | 2023.11.29 |
[Gold 5] 1041번 주사위 (0) | 2023.11.28 |
[Gold 4] 1967번 트리의 지름 (0) | 2023.11.28 |
[Gold 5] 11000번 강의실 배정 (0) | 2023.11.27 |