[DFS] 1967. 트리의 지름 (Python)

2024. 3. 8. 15:42·Computer Science/자료구조와 알고리즘

문제

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

풀이

  1. 한 노드 기준에서 각 정점까지 거리를 구하기
  2. 가장 먼 길이에 해당하는 노드 찾기
  3. 2번의 노드를 기준으로 거리 구하는 과정을 한번 더 반복하면 됨
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**5)

def dfs(idx,v):
    for n_idx, n_val in tree[idx]:
        if visited[n_idx] == -1:
            visited[n_idx] = v+n_val
            dfs(n_idx,v+n_val)

n = int(input())
tree = {}
for i in range(1,n+1):
    tree[i] = []
for _ in range(n-1):
    a,b,c = map(int, input().split())
    tree[a].append([b,c])
    tree[b].append([a,c])


visited = [-1]*(n+1)
visited[1] =0
dfs(1,0)
last_node = visited.index(max(visited))
visited = [-1] * (n + 1)
visited[last_node] = 0
dfs(last_node,0)
print(max(visited))
저작자표시 비영리 변경금지 (새창열림)

'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글

[Python] 가장 긴 증가하는 부분 수열(LIS) 구하는 방법  (0) 2024.03.04
[Python]가장 긴 증가하는 부분 수열(LIS) 길이 구하는 방법 2가지  (0) 2024.03.04
[코테 대비] javascript 기본 문법  (0) 2024.02.20
[누적합] 10986. 나머지의 합 (Python)  (0) 2024.02.19
[LeetCode] 53. maximum subarray (Brute-Force와 카데인 알고리즘) (python 풀이)  (0) 2022.02.11
'Computer Science/자료구조와 알고리즘' 카테고리의 다른 글
  • [Python] 가장 긴 증가하는 부분 수열(LIS) 구하는 방법
  • [Python]가장 긴 증가하는 부분 수열(LIS) 길이 구하는 방법 2가지
  • [코테 대비] javascript 기본 문법
  • [누적합] 10986. 나머지의 합 (Python)
BS Kwak
BS Kwak
  • BS Kwak
    Slow but steady wins the race
    BS Kwak
  • 전체
    오늘
    어제
    • 카테고리 (161)
      • Project (2)
      • Next.js (3)
      • HTML+CSS+JS (17)
      • Computer Science (139)
        • Programming Language (52)
        • 자료구조와 알고리즘 (75)
        • Digital circuit (3)
        • 기타 error (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    해시
    mysql error
    런타임 에러
    leetcode
    c++error
    티스토리챌린지
    cmd error
    LNK2001
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
BS Kwak
[DFS] 1967. 트리의 지름 (Python)
상단으로

티스토리툴바