목록플로이드 와샬 (13)
어흥
문제링크: www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net 1. 주의할 점 - 플로이드-와샬 알고리즘을 사용한다 2. 구현 - 각각의 비교 결과를 담는 Arr[][] 배열을 사용한다 - 입력받는 2개의 물건에 대해 앞쪽이 더 크므로 Arr[a][b] = 1, Arr[b][a] = -1로 선언하여 둘의 대소관계를 정리한다 - 플로이드 와샬 알고리즘을 통해 비교하려는 2개의 값이 모두 0이 아닌 같은 값을 지닐 경우, 해당 값으로 배열을..
문제 링크: https://www.acmicpc.net/problem/14588 14588번: Line Friends (Small) Q개의 줄에 걸쳐 두 선분이 가까운 정도를 출력한다. 만약, 두 선분 사이의 친구 관계가 단절되었다면 -1을 출력한다. www.acmicpc.net 1. 주의할 점 - 2개의 선분이 겹치는 조건을 잘 생각한다 - 플로이드 와샬 알고리즘에 대하여 알고 있어야한다 - 양방향 그래프이므로 플로이드 와샬을 사용할 경우, 배열의 원소를 잘 초기화 해야한다(내 코드의 경우 한번에 2개의 원소를 초기화 해야 한다) 2. 구현 - Arr[][]배열을 전부 987654321로 초기화하며, i==j인 경우에만 0으로 초기화한다 - 각 선분에 대한 정보를 입력받은 후, 2개의 선분(I,J)을 ..
문제 링크: https://www.acmicpc.net/problem/11780 11780번: 플로이드 2 첫째 줄에 도시의 개수 n(1≤n≤100)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 www.acmicpc.net 1. 주의할 점 - 플로이드 와샬 알고리즘을 진행하면서 경로를 저장해야 빠르게 문제를 풀 수 있다 - 플로이드 와샬 알고리즘을 진행하면서 새로운 최단 경로가 생성되는 경우, I~K까지의 경로 + K~J까지의 경로를 I~J까지의 경로에 갱신해서 저장한다. 단, K가 2번 입력되지 않도록 설정한다 - 간선의 정보를 입력받을 때, I~J까지의 경로가 1가지가 아닐 수..
문제 링크: https://www.acmicpc.net/problem/17182 17182번: 우주 탐사선 우주 탐사선 ana호는 어떤 행성계를 탐사하기 위해 발사된다. 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하려 한다. 입력으로는 ana호가 탐색할 행성의 개수와 ana호가 발사되는 행성의 위�� www.acmicpc.net 1. 주의할 점 - 플로이드와샬 알고리즘을 통해 미리 각 Node간 최단거리를 구해놓는다 2. 구현 - 각 Node간의 거리를 입력 받은 후, 플로이드 와샬 알고리즘을 사용하여 각 Node간 최단거리를 구한다 - 시작하는 행성의 Visit[]값을 True로 바꾼후, DFS()를 수행한다 - DFS(int idx, int dist, int planet) 함수는 각각 현재 행성,..