[BOJ] 백준 4963 섬의 개수
이 문제 역시, 그래프를 전부 탐색하면 되는 문제 입니다.
DFS나 BFS로 탐색을 실시하면 되겠습니다.
소스 코드 :
#include#include #include using namespace std; // 8방위 세팅 struct { int x, y; }move[8] = { {-1,0}, {-1,1}, {0,1}, {0,-1}, {1,0},{1,-1},{1,1},{-1,-1} }; vector cnt; bool visited[52][52]; int v[52][52]; int check = 0; // 갈수 있는 모든 길을 가본다. void DFS(int x, int y) { visited[x][y] = true; for (int i = 0; i < 8; i++) { int cur_x = x + ::move[i].x; int cur_y = y + ::move[i].y; if (visited[cur_x][cur_y] == false && v[cur_x][cur_y] == 1) { DFS(cur_x, cur_y); } } } int main() { while (true) { int a, b; cin >> b >> a; cin.ignore(); if (a == 0 && b == 0) break; for (int i = 1; i <= a; i++) { for (int j = 1; j <= b; j++) { scanf("%1d", &v[i][j]); } } for (int i = 1; i <= a; i++) { for (int j = 1; j <= b; j++) { if (v[i][j] == 1 && visited[i][j] == false) { // 한번 출발한 DFS가 풀릴 때 check++ check++; DFS(i, j); } } } cout <
댓글
댓글 쓰기