다익스트라 4

[BOJ] 2211번 네트워크 복구 (C++)

문제 (https://www.acmicpc.net/problem/2211) 2211번: 네트워크 복구 첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 회선의 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 컴퓨터와 B번 컴퓨터가 통신 시간이 C (1 ≤ C ≤ 10)인 회선으로 연결되어 있다 www.acmicpc.net 처음엔 MST를 사용해야하나? 라는 생각이 들었지만 다익스트라로 만들어진 MST와 MST는 서로 다르다는 반례를 보고 다익스트라로 문제를 해결했다. 11779 최소비용 구하기 2 문제에서 사용했던 방식과 유사하다. route라는 배열을 생성하여 배열의 해당 인덱스에 도달하기 위해서는 몇 번에서 와야 하는지를 기록한다. route[a] = b는 "a번에 최소로 도..

ALGORITHM/BOJ 2022.01.17

[BOJ] 13549번 숨바꼭질 3 (C++)

문제 (https://www.acmicpc.net/problem/13549) 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 작년에 BFS로 풀었던 1697 숨바꼭질과 비슷한 문제이다. 다익스트라 알고리즘 스터디 주간에 고른 문제여서 다익스트라로 해결해보려 했지만,, 문제를 읽고 생각을 해봐도 1697번 문제처럼 BFS로 해결하는 방법밖에 떠오르지 않았다...! 그래서 일단 BFS로 해결 완! (코드 첨부) BFS로 해결할 경우 방문 순서에 따라 정답이 되기도 하고 아니기도 한..

ALGORITHM/BOJ 2022.01.17

[BOJ] 1238번 파티 (C++)

문제 (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 N개의 마을에는 각각 한 명의 학생이 살고 있고, 입력받은 X번 마을에서 파티가 열린다. 모든 학생들의 이동거리는 최단거리여야 한다. N명의 학생들 중 (i번째 마을 -> x번 마을) + (x번 마을 -> i번째 마을) 시간이 가장 긴 학생의 소요시간을 출력하면 된다. Dijkstra Algorithm: '한 정점'에서 '모든 정점'으로의 최단경로 인접 리스..

ALGORITHM/BOJ 2022.01.17

[BOJ] 11779번 최소비용 구하기 2 (C++)

문제 (https://www.acmicpc.net/problem/11779) 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 출발 도시에서 도착 도시까지의 최소 비용을 구하는 일반적인 다익스트라 문제이다. 다른 문제들과 차이점은 최소 비용뿐만 아니라 경로에 포함되어있는 도시의 개수와 방문하는 도시 번호도 출력해야 한다. 따라서 배열을 생성하여 각 도시에 도달하기 위해서는 몇 번 도시에서 출발해야 하는지를 기록했다. 예를 들어, route[a] = b는 "a번에 최소로 도달하기 위..

ALGORITHM/BOJ 2022.01.04