이동식 저장소

1507. 궁금한 민호 본문

Problem Solving/BOJ

1507. 궁금한 민호

해스끼 2021. 6. 26. 23:18

골3 문제로 재활 중이다. 언제까지 재활만 하냐고요? 저도 몰라요..

 

1507번: 궁금한 민호

강호는 N개의 도시로 이루어진 나라에 살고 있다. 각 도시는 M개의 도로로 연결되어 있으며, 각 도로를 지날 때 필요한 시간이 존재한다. 도로는 잘 연결되어 있기 때문에, 도시 A에서 B로 이동할

www.acmicpc.net


두 가지 방법으로 풀 수 있는 문제이다.

그리디

주어지는 간선을 비용이 낮은 순서대로 정렬한다. 이때 간선에 방향이 없으므로 (i,j) (i<j)를 잇는 간선만 담는다.

 

빈 그래프 graph를 준비하고, 정렬된 각 간선에 대해 다음을 수행한다.

  1. 변수 선언: 이 간선은 정점 ij를 연결하며, 간선의 거리는 cost이다.
  2. ij가 연결되지 않았거나, ij 사이의 거리가 cost보다 크거나 같다면 graph에서 ij를 연결한다.
    • ij 사이의 거리를 구하는 방법은 여러 가지가 있다. 구현한 방법이 거리를 정확히 구하는 지 반드시 확인하자.
  3. 위의 과정을 모든 간선에 대해 수행한다. 중요하다!

이제 주어진 입력과 graph를 비교해 보자. 입력에서 주어진 거리와 graph에서의 거리가 하나라도 다르다면 -1을 출력해야 한다. 그렇지 않다면 위의 2번 과정에서 연결한 간선의 거리의 합을 출력하면 된다.

플로이드-와샬

사실 난 그리디로만 풀었는데, 플로이드 와샬을 기반으로 풀 수도 있다.

 

핵심 아이디어는 ij, jk가 연결되어 있는데 dist[i][j]<=라면 (i,j)(j,k)를 잇는 간선은 필요가 없다는 것이다. 이 방법으로는 풀지 않아서 세부적인 구현은 생략하겠다. 한번 생각해 보길.


그냥저냥 무난한 문제. 딱 재활하기 좋은듯?

'Problem Solving > BOJ' 카테고리의 다른 글

8980. 택배  (0) 2021.07.25
10800. 컬러볼  (0) 2021.07.21
2696. 중앙값 구하기  (0) 2021.05.24
15824. 너 봄에는 캡사이신이 맛있단다  (0) 2021.04.23
2560. 짚신벌레  (0) 2021.04.17
Comments