๐ง๐ป [Python] ๋ฐฑ์ค 1967 ํธ๋ฆฌ์ ์ง๋ฆ
Gold 4 - DFS
๋ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ค์น๋ค์ ๋ํ์ ๋์ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ
์ฌ๊ธฐ์ 1์ ๊ธฐ์ค์์ ๊ฐ์ค์น๊ฐ ์ ์ผ ํฐ ๋ ธ๋๋ฅผ ๊ตฌํ๋ค
๊ทธ ๋ค์, ๊ฐ์ค์น๊ฐ ์ ์ผ ํฐ ๋ ธ๋๋ฅผ ์์์ผ๋ก DFS๋ฅผ ํ์ฌ, ์ ์ผ ํฐ ๊ฐ์ค์น๋ฅผ ๊ตฌํ๋ค
์ฌ๊ธฐ์ DFS๋ฅผ ํ๋ฉด ์ด๋์๋ , ์ ์ผ ๋์ ์๋ ์์ ๋ ธ๋์ ๊ฐ๊ฒ ๋๋ค
๋ฌธ์ ํ์ด
- ์ฒซ DFS๋ฅผ ํ ํ์,
visited
๋ฆฌ์คํธ ๋ค์ ์ด๊ธฐํ ์์ผ์ผ ํ๋ค second_index = visited.index(max(visited))
์ ํตํด์ ๋๋ฒ์งธ DFS๋ฅผ ํ ๋์, ์์ ์ ์ ์ฐพ๋๋ค
์ฝ๋
import sys
sys.setrecursionlimit(10 ** 9)
def dfs(start, weight):
for node, wei in tree[start]:
if visited[node] == -1:
visited[node] = weight + wei
dfs(node, weight + wei)
n = int(input())
tree = [[] for _ in range(n + 1)]
visited = [-1] * (n + 1)
visited[1] = 0
for _ in range(n-1):
a, b, w = map(int, input().split())
tree[a].append((b, w))
tree[b].append((a, w))
dfs(1, 0)
second_index = visited.index(max(visited))
visited = [-1] * (n + 1)
visited[second_index] = 0
dfs(second_index, 0)
print(max(visited))
'์๊ณ ๋ฆฌ์ฆ > DFS BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1915 ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ (0) | 2023.03.31 |
---|---|
[Python] ๋ฐฑ์ค 1389 ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2023.03.29 |
[Python] ๋ฐฑ์ค 1520 ๋ด๋ฆฌ๋ง๊ธธ (0) | 2023.02.15 |
[Python] ๋ฐฑ์ค 24482 ์๊ณ ๋ฆฌ์ฆ ์์ (0) | 2023.02.14 |
[Python] ๋ฐฑ์ค 7569 ํ ๋งํ (0) | 2023.02.13 |