[백준] 1238 파티 -python 파이썬

2025. 5. 21. 14:58·코딩테스트/백준

문제

 

 

 

 

처음 이 문제를 접했을 때 한 정점에서 각 정점까지의 최단거리를 구하는 다익스트라 알고리즘을 써야겠다. 라고 생각을 했는데 문제는

이 문제에서 물어보는 것은 왕복 거리라는 거다.

 

 

그래서 여기서 구해줘야하는 것은

 

1. i번 정점 -> x정점 까지의 최단 거리
2. x 정점 -> i 번 정점까지 최단 거리

 

이 둘을 합한 값이 최대인 값을 구해주면 된다.

 

 

그러기 위해서는 다익스트라 알고리즘을 모든 정점을 시작 노드로 주고 구해주면 된다. 

그리고 1번 + 2번의 값을 정해서 최대값을 찾아주면된다.

 

정답 코드

import heapq
n, m, x = map(int,input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
    s,e,t = map(int,input().split())
    graph[s].append((t,e))

def dijkstra(start):
    dp = [1e9]* (n+1)
    heap = []
    dp[start] = 0
    heapq.heappush(heap,(0,start))
    while(heap):
        wei,now = heapq.heappop(heap)

        if dp[now]< wei:
            continue
        for w, nxt in graph[now]:
            nxt_w = w + wei
            if nxt_w < dp[nxt]:
                dp[nxt] = nxt_w
                heapq.heappush(heap,(nxt_w,nxt))
    return dp
#i 번 도시 -> x번도시
come = dijkstra(x)

#x번 도시 -> i번도시 구하기
back = [0]*(n+1)
for i in range(1,n+1):
    if i!= x:
        tmp = dijkstra(i)
        back[i] = tmp[x]
ans = 0
for i in range(1,n+1):
    
    #i번 도시 -> x번 도시 최단거리 + x번 도시 -> i번 도시 최단거리의 최대값
    ans = max(ans,come[i]+back[i])

print(ans)

'코딩테스트 > 백준' 카테고리의 다른 글

[백준]10986번 나머지 합 python  (0) 2025.07.03
[백준] 14890번 경사로  (0) 2025.06.16
[백준]2252번 줄세우기 - python (위상정렬)  (0) 2025.05.19
[백준]11657 타임머신 - Python 파이썬  (0) 2025.04.18
[백준] 1253번 좋다 - python 파이썬  (0) 2025.04.17
'코딩테스트/백준' 카테고리의 다른 글
  • [백준]10986번 나머지 합 python
  • [백준] 14890번 경사로
  • [백준]2252번 줄세우기 - python (위상정렬)
  • [백준]11657 타임머신 - Python 파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    그리디
    K디지털트레이닝
    kdt교육
    BFS
    프로그래머스
    파이썬
    알고리즘
    프디아
    백준
    알파코캠퍼스
    백엔드
    MSA
    Java
    UnionFind
    EC2
    github
    백트래킹
    AWS
    깃허브
    bastion host
    spring
    투포인터
    IT기획
    신한투자증권
    알파코
    코테
    python
    프로디지털아카데미
    다익스트라
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준] 1238 파티 -python 파이썬
상단으로

티스토리툴바