-
https://www.acmicpc.net/problem/1753
1753번: 최단경로
첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201753
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 방향 그래프가 주어졌을 때 주어진 시작점에서 모든 정점까지
최단 경로를 구해 출력해 주는 문제다.
다익스트라 알고리즘을 이용해서 문제를 해결했으며,
정렬은 PriorityQueue(우선순위 큐)를 사용하였고 람다식을 이용해 정렬했다
간선 정보는 ArrayList<ArrayList<Edge>>
어레이 리스트 안에 어레이 리스트를 넣는 방식으로 사용했다.
처음에 방문 배열과 비용 어레이 리스트를 다 초기화 시켜 크기를 할당해 주고
이후 입력받은 간선 정보를 어레이 리스트에 넣어준 뒤
주어진 시작점을 pq에 넣어 pq가 빌 때까지 돌면서 최솟값을 찾아 넣어주는 식으로
문제를 해결했다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 5972 택배 배송 JAVA (0) 2021.11.09 Baekjoon 1916 최소비용 구하기 JAVA (0) 2021.11.09 Baekjoon 21924 도시 건설 JAVA (0) 2021.11.09 Baekjoon 1774 우주신과의 교감 JAVA (0) 2021.11.09 Baekjoon 4386 별자리 만들기 JAVA (0) 2021.11.09 댓글