C++ BFS

BOJ

[BOJ] 백준 18405번 경쟁적 전염 C++

문제 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 풀이 BFS + 구현으로 해결할 수 있었다. 처음에는 시간 -> 바이러스 종류 -> X좌표 -> Y좌표로 이루어진 4중 for문으로 해결하려다가 시간 초과가 나서 정렬을 통한 풀이로 방법을 바꿨다. 우선순위 큐를 하나 만들어주는데 이 큐가 3개의 자료형 (X좌표, Y좌표, 바이러스의 종류)를 담을 수 있도록 했다. 참고로 자료형 3개 이상을 담을 때는 tuple..

BOJ

[BOJ] 백준 17129번 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유 C++

문제 https://www.acmicpc.net/problem/17129 17129번: 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유 첫째 줄에 정보섬 2층의 크기 n과 m이 주어진다. (1 ≤ n,m ≤ 3000, 4 ≤ n×m ≤ 9×106) 이후 n행 m열에 걸쳐 0, 1, 2, 3, 4, 5로만 구성된 Ai,j가 주어진다. Ai,j와 Ai,j+1사이에 공백은 주어지지 않는다. 2, www.acmicpc.net 풀이 BFS + 최단거리로 해결할 수 있었다. 거리를 저장할 배열인 dist와 정보섬의 값을 저장할 배열인 board를 만들어 board를 입력받았다. 이때 해당 정보섬 좌표의 값이 2이면 해당 좌표가 시작점이므로 startX, startY라는 변수에 담아주었다. 이후에는 dist의 배열을 ..

BOJ

[BOJ] 백준 14940번 쉬운 최단거리 C++

문제 https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 풀이 BFS 최단거리로 해결할 수 있었다. 지도를 관리할 2차원 배열인 board와 각 지점의 거리를 관리할 2차원 배열인 dist를 만들어서 지도를 입력받으면서 해당 좌표의 값이 2이면 그 좌표가 탐색의 시작점이므로 startX, startY라는 변수에 담아주었고, 만약 0이 나와 갈 수 없는 땅이라면 처음부터 거리 배열인 dist에 0을 넣어주..

Doshisha
'C++ BFS' 태그의 글 목록