본문 바로가기

BFS12

1743 : 음식물 피하기 (C++) 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ 10,000)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진 www.acmicpc.net 먼저 음식물이 떨어진 좌표값들을 입력 받은 후 DFS를 실행한다. #include using namespace std; #define MAX_VALUE 101 int N, M, K; int map[MAX_VALUE][MAX_VALUE]; bool visit[MAX_VALUE][MAX_VALUE]; int cnt = 0; int result = 0; int dx[4] = {1, -1, 0, 0}; int dy[4] = .. 2021. 2. 4.
2606 : 바이러스 (C++) 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 먼저 DFS로 푼 방식이며 인접리스트를 활용하였다. 1번 컴퓨터를 통해 감염되는 컴퓨터의 수를 출력하므로 마지막에 센 숫자에서 1을 빼준다. #include #include #include using namespace std; int cnt = 0; void dfs(int start, vector graph[], bool check[]) { check[start] = true; cnt++; for(int i = 0; i < graph[start].size(); i++.. 2021. 2. 3.
1260 : DFS와 BFS (C++) 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include #include #include #include using namespace std; void dfs(int start, vector graph[], bool check[]) { check[start] = true; printf("%d ", start); for(int i = 0; i < graph[start].size(); i++) { int next = graph[start][i]; if(check[nex.. 2021. 2. 3.