8000 Update 1967.cpp · dongju97/basic-algo-lecture@19682b4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 19682b4

Browse files
committed
Update 1967.cpp
1 parent 7b9feea commit 19682b4

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

0x19/solutions/1967.cpp

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,43 @@
1-
// Authored by : BaaaaaaaaaaarkingDog
1+
// Authored by : heheHwang
22
// Co-authored by : -
3-
// http://boj.kr/****************
3+
// http://boj.kr/423861969c3b470a932358dfbf516c11
44
#include <bits/stdc++.h>
55
using namespace std;
66

7-
int main(void){
7+
const int MXN = 100'010;
8+
bool vis[MXN];
9+
int mxCost, mxNode;
10+
vector<pair<int, int>> adj[MXN];
11+
void dfs(int cur, int dist) {
12+
if (mxCost < dist) {
13+
mxNode = cur;
14+
mxCost = dist;
15+
}
16+
for (auto [nxtDist, nxt] : adj[cur]) {
17+
if (vis[nxt]) continue;
18+
vis[nxt] = true;
19+
dfs(nxt, dist + nxtDist);
20+
}
21+
}
22+
int main(void) {
823
ios::sync_with_stdio(0);
924
cin.tie(0);
10-
11-
}
25+
26+
int n, u, v, c;
27+
cin >> n;
28+
for (int i = 0; i < n - 1; i++) {
29+
cin >> u >> v >> c;
30+
adj[u].push_back({c, v});
31+
adj[v].push_back({c, u});
32+
}
33+
vis[1] = true;
34+
dfs(1, 0);
35+
fill(vis, vis + MXN, false);
36+
vis[mxNode] = true;
37+
dfs(mxNode, 0);
38+
cout << mxCost;
39+
}
40+
/*
41+
트리의 지름을 찾으려면 아무 한 점에서 제일 멀리 간 다음,
42+
그 점에서 제일 멀리 있는 점까지의 거리를 재면 됩니다.
43+
*/

0 commit comments

Comments
 (0)
0