Skip to content

Commit 60a1aeb

Browse files
committed
백준 1967번 트리의 지름
문제 링크: https://www.acmicpc.net/problem/1967
1 parent 00047bb commit 60a1aeb

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import sys
2+
sys.setrecursionlimit(11000)
3+
from collections import defaultdict
4+
5+
6+
def solve():
7+
n = int(sys.stdin.readline().strip())
8+
edges = defaultdict(list)
9+
10+
for _ in range(n - 1):
11+
parent, child, length = map(int, sys.stdin.readline().strip().split(' '))
12+
edges[parent].append([child, length])
13+
14+
answer = [0]
15+
dfs(1, answer, edges)
16+
17+
print(answer[0])
18+
19+
20+
def dfs(parent, answer, edges):
21+
local_answers = []
22+
23+
for child, length in edges[parent]:
24+
local_answers.append(length + dfs(child, answer, edges))
25+
26+
if len(local_answers) >= 2:
27+
local_answers.sort(reverse=True)
28+
local_answer = sum(local_answers[:2])
29+
answer[0] = max(answer[0], local_answer)
30+
31+
if len(local_answers) >= 1:
32+
answer[0] = max(answer[0], local_answers[0])
33+
return local_answers[0]
34+
35+
return 0
36+
37+
38+
if __name__ == '__main__':
39+
solve()
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
12
2+
1 2 3
3+
1 3 2
4+
2 4 5
5+
3 5 11
6+
3 6 9
7+
4 7 1
8+
4 8 7
9+
5 9 15
10+
5 10 4
11+
6 11 6
12+
6 12 10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import sys
2+
from pathlib import Path
3+
from unittest import TestCase
4+
from main import solve
5+
6+
7+
class Test(TestCase):
8+
def my_solve(self, testcase_input):
9+
sys.stdin = open(testcase_input, 'r')
10+
stdout = sys.stdout
11+
sys.stdout = open('stdout.txt', 'w')
12+
solve()
13+
sys.stdout.close()
14+
sys.stdout = stdout
15+
16+
def test_solve(self, testcase_number: str):
17+
self.my_solve('test' + testcase_number + '.txt')
18+
self.assertEqual(
19+
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
20+
Path('stdout.txt').read_text().strip())
21+
22+
def test1_solve(self):
23+
self.test_solve('1')

0 commit comments

Comments
 (0)