[백준] 11657 타임머신 - Graph Theory / Java
• 문제 링크 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net • 풀이 과정 한 노드(1번 도시)에서 다른 모든 노드(나머지 도시)까지의 최단 거리(최단 시간)를 구하고 타임머신이라는 간선의 가중치가 음수인 경우가 존재하므로 Bellman-Ford 알고리즘을 활용한다. 각 노드의 최단 거리를 dist 배열에 무한대 값(inf) 으로 초기화하고, 각 간선의 출발, 도착점, 가중치의 정보를 Edge 객체로 저장한다. 1번 노드를 출발 노드로 나머지 노드들..
2022. 8. 17.
[백준] 2252 줄 세우기 - Graph Theory / Java
• 문제 링크 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net • 풀이 과정 어떤 학생보다 키가 크므로 먼저 줄을 서야하는 학생의 수, 즉 외부 노드에서 들어오는 간선의 개수(진입 차수) 를 inDegree 배열에 저장하여 위상 정렬로 풀이한다. 예시로 학생 2 보다 큰 키의 학생 3, 4가 주어질 경우, (4, 2), (3, 2) 의 입력이 주어지고 inDegree[2]++ 가 총 두번 수행되어 inDegree[2] = 2 로 초기화된다. 이 후 학생 i 에 대하여..
2022. 8. 12.