백준 20188. 등산마니아

2023. 10. 18. 15:33·백준

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

 

20188번: 등산 마니아

동네 뒷 산에는 등산로가 있다. 등산로는 N개의 작은 오두막들이 N −1개의 오솔길로 이어진 형태이다. 한 오솔길은 두 개의 오두막을 양 방향으로 연결한다. 한 오솔길의 길이는 1이다. 어떤 오

www.acmicpc.net

N = int(input())
arr = [[] for _ in range(N+1)]
for _ in range(N-1):
    a, b = map(int,input().split())
    arr[a].append(b)  # 인접 리스트 생성
    arr[b].append(a)

d = [0] * (N+1) 
res = 0
def dfs(me,parent):  # 현재/부모
    global res

    for child in arr[me]:
        if child != parent: # 자식노드와 부모노드가 같지 않은 경우에만(역방향 방지)
            dfs(child,me)
            d[me] += d[child]+1  # 현재 노드부터 자식노드의 모든 하위 노드들까지 경로 길이 저장

    # 현재 노드를 거쳐가는 모든 가능한 경로의 길이
    val = (d[me] + 1) * (N - (d[me] + 1)) + (d[me] * (d[me] + 1) // 2)
    # 현재 노드까지 거친(+1) 경로의 길이 * 현재 노드를 거친(+1) 이후에 남은 노드들까지의 길이
    # + 현재 노드의 하위 노드들 간의 경로 길이의 합(현재노드 거치지 않은)->중복방지로 2 나눔

    if me != 1:
       res += val

dfs(1,0)
print(res)

why..?

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 2212. 센서  (0) 2023.10.20
백준 1459. 걷기  (0) 2023.10.19
백준 1459. 걷기  (0) 2023.10.18
백준 2195. 문자열 복사  (0) 2023.10.10
백준 14503. 로봇 청소기  (0) 2023.09.22
'백준' 카테고리의 다른 글
  • 백준 2212. 센서
  • 백준 1459. 걷기
  • 백준 1459. 걷기
  • 백준 2195. 문자열 복사
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    개발자취업
    코딩테스트준비
    Til
    99클럽
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 20188. 등산마니아
상단으로

티스토리툴바