본문 바로가기

Beakjoon/DFS, BFS

(6)
[백준] 7576번 토마토 (C++) - BFS 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 코드 #include #include #include using namespace std; int m,n,day=0; int box[1000][1000]; int isVisited[1000][1000]; queue q; // 북, 동, 남, 서 int dy[4] = {-1,0,1,0}; int dx[4] = {0,1,0,-1}; bool inRange(int y, int x)..
[백준] 2636번 치즈 (C++) - BFS 문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 코드 #include #include #include using namespace std; int r,c; int hour = 0; int cheese[100][100]; bool isVisited[100][100]; // 동, 남, 서, 북 int dy[4] = {0,1,0,-1}; int dx[4] = {1,0,-1,0}; void initVisited(){ for(int i=0; i
[백준] 11403번 경로 찾기 (C++) - DFS, BFS, Floyd Warshall 문제 https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 DFS #include using namespace std; int map[101][101]; bool isVisited[101] = {false, }; int result[101][101]; int n; void dfs(int node, int startNode){ for(int i=1; i> n; for(int i=1; i map[i][j]; } } for(int i=1; i
[백준] 2667번 단지번호붙이기 (C++) - DFS, BFS 문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 코드 DFS #include #include #include #include using namespace std; int map[26][26]; bool isVisited[26][26]; vector v; int n, c = 0; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; void dfs(int y, int x){ isVisited[y][x] = tr..
[백준] 2178번 미로 탐색 (C++) - BFS 문제 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 코드 #include #include #include using namespace std; int n, m; int maze[101][101]; int isVisited[101][101] = {false, }; int dist[101][101]; queue q; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1 }; void bfs(int y, int x){ q.push(make_pair(y..
[백준] 2606번 바이러스 (C++) - DFS, BFS 문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 dfs #include using namespace std; int map[101][101]; bool isVisited[101] = {false, }; int computerN, pairN; int infectedN = 0; void dfs(int node){ isVisited[node] = true; for(int i=1; i> computerN >> pairN; for(int i=0; ..