dfs 문제를 안다면 쉽게 풀 수있다
아주 쉽죠?ㅎㅎ
□ 소스 코드
#include <bits/stdc++.h>
int cabN, cabM, cabK;
int cabList[51][51]{0};
bool findWorm(int x, int y){
if(x<0 || y<0 || x>=cabN || y>=cabM)
return false;
if(cabList[x][y] == 1){
cabList[x][y] = 0;
findWorm(x+1, y);
findWorm(x-1, y);
findWorm(x, y+1);
findWorm(x, y-1);
return true;
}
return false;
}
void cabbage(){
int testCase;
scanf("%d",&testCase);
for(int tC=0;tC<testCase;tC++){
int cabCnt = 0;
scanf("%d%d%d",&cabN,&cabM,&cabK);
for(int i=0;i<cabK;i++){
int cabIn1,cabIn2;
scanf("%d%d",&cabIn1,&cabIn2);
cabList[cabIn1][cabIn2] = 1;
}
for(int i=0;i<cabN;i++){
for(int j=0;j<cabM;j++){
if(findWorm(i, j)== true){
cabCnt++;
}
}
}
printf("%d\n",cabCnt);
memset(cabList, 0, sizeof(cabList));
}
}
'알고리즘 > DFS & BFS' 카테고리의 다른 글
백준[1697] 숨바꼭질 (0) | 2023.01.24 |
---|---|
백준[2178] 미로 탐색 (0) | 2023.01.11 |
백준[2667] 단지번호붙이기 (0) | 2023.01.11 |
백준[1260] DFS와 BFS (0) | 2023.01.11 |
백준[2606] 바이러스 (0) | 2023.01.10 |