====== 트리의 지름 ====== * [[ps:problems:boj:1167|트리의 지름 (1167번)]] 문제와 제목도 같고, 구해야 하는 것도 똑같다. 하지만 1167번은 그냥 트리이고 이 문제느 rooted tree라는 점만 다르다. ===== 풀이 ===== * [[ps:트리#트리의 지름]] 참고 * rooted tree 이므로, DP 방식을 써도 되지만, [[ps:problems:boj:1167|1167번]]과 똑같이 BFS/DFS에 기반한 방법을 사용했다. * 실제 제출된 코드들의 속도를 보면 DP방식이 더 빠른것 같긴 하다. ===== 코드 ===== """Solution code for "BOJ 1967. 트리의 지름". - Problem link: https://www.acmicpc.net/problem/1967 - Solution link: http://www.teferi.net/ps/problems/boj/1967 """ import operator import sys from teflib import tgraph def main(): n = int(sys.stdin.readline()) graph = [{} for x in range(n)] for _ in range(n - 1): u, v, w = [int(x) for x in sys.stdin.readline().split()] graph[u - 1][v - 1] = graph[v - 1][u - 1] = w farthest = max(enumerate(tgraph.min_distances_on_tree(graph, 0)), key=operator.itemgetter(1))[0] diameter = max(tgraph.min_distances_on_tree(graph, farthest)) print(diameter) if __name__ == '__main__': main() * Dependency: [[:ps:teflib:tgraph#min_distances_on_tree|teflib.tgraph.min_distances_on_tree]] {{tag>BOJ ps:problems:boj:골드_4 ps:teflib:min_distances_on_tree}}