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

2022. 4. 14. 14:08·알고리즘 공부/다익스트라

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

 

1238번: 파티

첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어

www.acmicpc.net

이 문제는 다익스트라를 이용한 최단 경로 문제이다.

 

이문제의 특성이라면 최단 경로로 갔다가? 다시 돌아와야한다

이러한 점만 고려하면 기본적인 다익스트라 알고리즘에 문제의 조건에만 맞게 해주면 해결 가능하다.

import sys
import heapq

n, m, x = map(int, sys.stdin.readline().split())
graph = [[] for _ in range(n + 1)]
INF = int(1e9)


for _ in range(m):
    a, b, t = map(int, sys.stdin.readline().split())
    graph[a].append((b, t))


def dijkstra(start):
    q = []
    heapq.heappush(q, (0, start))
    distance = [INF] * (n + 1)
    distance[start] = 0
    while q:
        dist, now = heapq.heappop(q)

        if distance[now] < dist:
            continue

        for i in graph[now]:
            b, t = i
            cost = dist + t
            if cost < distance[b]:
                distance[b] = cost
                heapq.heappush(q, (cost, b))
    return distance

distance2 = dijkstra(x)
answer = 0

for i in range(1, n + 1):
    # i에서 출발한 최단 경로들
    distance1 = dijkstra(i)
    answer = max(answer, distance1[x] + distance2[i])
print(answer)
반응형

'알고리즘 공부 > 다익스트라' 카테고리의 다른 글

[백준] 1916번 최소비용 구하기 - 파이썬  (0) 2022.04.12
[백준] 1753번 최단경로 - 파이썬  (0) 2022.03.28
가장 빠른 길 찾기 - 다익스트라(데이크스트라) 알고리즘  (0) 2022.02.11
'알고리즘 공부/다익스트라' 카테고리의 다른 글
  • [백준] 1916번 최소비용 구하기 - 파이썬
  • [백준] 1753번 최단경로 - 파이썬
  • 가장 빠른 길 찾기 - 다익스트라(데이크스트라) 알고리즘
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    이미지처리
    그리디
    코딩기초스킬
    if문
    자료구조
    n진법 변환
    c언어
    프로그래머스
    코딩기초
    코딩문제
    캘리브레이션
    스택
    순차 탐색
    인접행렬
    인접리스트
    BFS
    코딩테스트
    삽입 정렬
    DFS
    선택정렬
    알고리즘
    코딩
    다이나믹 프로그래밍
    에라토슽네스의 체
    왜곡보정
    C언어 기초
    소수찾기
    백준
    큐
    정렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
[백준] 1238번 파티 - 파이썬
상단으로

티스토리툴바