[백준] 1956번 운동 - 파이썬

2022. 4. 14. 11:39·알고리즘 공부/플로이드 워셜

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

 

1956번: 운동

첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의

www.acmicpc.net

플로이드워셜 알고리즘을 이용하면 쉽게 풀수 있는 문제이다.

플로이드 워셜 알고리즘은 a -> b로 가는 최단 경로를 찾는 문제이기 때문에 이문제에 적합한 알고리즘이라 생각했다.

다만 약간 다른점은 왕복이므로 최단 경로 그래프에서 a -> b -> a의 값을 구해야한다.

그리고 마지막 조건 만약에 존재하지않을때 -1을 출력하는 조건을 꼭 붙이자 

이거 때문에 시간 너무 날림 

import sys


v, e = map(int,sys.stdin.readline().split())
q = []
INF = int(1e9)
graph= [[INF]*(v+1) for _ in range(v+1)]
for i in range(1,v+1):
    for j in range(1,v+1):
        if i == j:
            graph[i][j] = 0
for _ in range(e):
    a,b,c = map(int,sys.stdin.readline().split())
    graph[a][b] = c

for i in range(1,v+1):
    for a in range(1,v+1):
        for b in range(1,v+1):
            graph[a][b] = min(graph[a][i]+graph[i][b],graph[a][b])
answer = INF
for a in range(1,v+1):
    for b in range(1,v+1):
        if a !=b:
            answer = min(answer, graph[a][b] + graph[b][a])
if answer == INF:
    print(-1)
else:
    print(answer)

 

https://zoozoozoo.tistory.com/400

 

플로이드 워셜 알고리즘

 다익스트라 알고리즘은 '한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하는 경우' 에 사용할 수 있는 최단 경로 알고리즘이다. 하지만 플로이드 워셜 알고리즘은 '모든 지점에서 다른

zoozoozoo.tistory.com

 

반응형

'알고리즘 공부 > 플로이드 워셜' 카테고리의 다른 글

[백준] 11404번 플로이드 - 파이썬  (0) 2022.04.07
플로이드 워셜 알고리즘  (0) 2022.04.07
'알고리즘 공부/플로이드 워셜' 카테고리의 다른 글
  • [백준] 11404번 플로이드 - 파이썬
  • 플로이드 워셜 알고리즘
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (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문
    순차 탐색
    캘리브레이션
    이미지처리
    정렬
    삽입 정렬
    c언어
    알고리즘
    큐
    소수찾기
    인접행렬
    BFS
    코딩문제
    n진법 변환
    그리디
    선택정렬
    프로그래머스
    백준
    코딩테스트
    다이나믹 프로그래밍
    인접리스트
    자료구조
    왜곡보정
    DFS
    에라토슽네스의 체
    코딩
    코딩기초스킬
    C언어 기초
    스택
  • 최근 댓글

  • 최근 글

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

티스토리툴바