-
BOJ 백준 파이썬 1967 트리의 지름백준 2022. 7. 1. 03:29
가장 근본적인 방식은 모든 정점에서 시작해보는 완전 탐색일 것이다.
한 정점과 한 정점 사이의 최대 거리니까
하지만, dfs로 시도해보니 시간초과가 나고 bfs로 시도해보니
간당간당하게 통과한다.
결국 목적은 코딩테스트 통과고
문제 풀이니 미리 푸는 개념을 알면 장땡이다.
1)임의의 한 노드에서 시작해서 가장 거리가 먼 노드를 찾고
2)그 노드에서 가장 먼 노드를 찾아주면 된다.
3) 1,2 과정에서 구한 거리를 더해주면 된다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import sysfrom collections import dequefrom itertools import combinationsfrom typing import List, Literalsys.setrecursionlimit(100000)def dfs(x,depth):global res,node#print(x+1,depth)for y,ln in graph[x]:if ch[y]==-1:ch[y]=1if res<depth+ln:res=depth+ln# print(y,res)node=ydfs(y,depth+ln)ch[y]=-1if __name__=='__main__':# sys.stdin=open("input2.txt", "rt")n=int(input()) ##노드의 갯수graph=[[]*n for _ in range(n)]#dist=[[-1]*n for _ in range(n)] ##가중치의 길이 저장ch=[-1]*nfor _ in range(n-1):a,b,c=map(int,input().split()) ##a=부모 노드,b=자식 노드,c=노드와 노드 간의 길이(가중치)a-=1b-=1graph[a].append([b,c])graph[b].append([a,c])ch=[-1]*nch[0]=1res=0node=0 ##가장 먼 노드dfs(0,0)ch=[-1]*nch[node]=1res=0dfs(node,0)print(res)cs '백준' 카테고리의 다른 글
백준 BOJ 파이썬 22868 산책(small) (0) 2022.07.02 BOJ 9466 파이썬 텀 프로젝트 (0) 2022.07.01 BOJ 백준 파이썬 16932 모양 만들기 (0) 2022.06.30 BOJ 백준 파이썬 2206 벽 부수고 이동하기 (0) 2022.06.30 BOJ 백준 파이썬 4179 불! (0) 2022.06.30