본문 바로가기

알고리즘

[C++] BOJ-1012 문제풀이

BOJ-1012 문제풀이

풀이 작성중..

전체 소스코드

#include <iostream>
#include <queue>

using namespace std;

int map[51][51];

int dx[4] = {0,0,-1,1}; // 상하좌우 
int dy[4] = {1,-1,0,0};
queue< pair<int, int> > q;
int T,N,M,K;
int X,Y;

int bfs(){
	int cnt = 0;
	
	for(int i = 0; i<N; i++){
		for(int j = 0; j<M; j++){
			
			if(map[i][j] == 1){
				map[i][j] == 0;
//				cout << i << j << endl;
				q.push(make_pair(i,j));
				while(!q.empty()){
					
					int x = q.front().first;
					int y = q.front().second;
					q.pop();
					
					for(int k = 0; k<4; k++){
						int rx = x + dx[k];
						int ry = y + dy[k];
						if(rx>=0 && ry >= 0 && rx < N && ry < M){
							if(map[rx][ry] == 1){
								map[rx][ry] = 0;
								q.push(make_pair(rx,ry));
							}
						}
					}
				}
				cnt++;
			}
		}
	}
	return cnt;
}

int main() {
	cin >> T;
	for(int Test_case = 0; Test_case<T; Test_case++){
		cin >> M >> N >> K;
		for(int i = 0; i<K; i++){
			cin >> X >> Y;
			map[Y][X] = 1;
		}
		cout << bfs() << "\n";
		
		for(int i = 0; i<N; i++){
			for(int j = 0; j<M; j++){
				map[i][j] = 0;
			}
		}
	}
	
}

'알고리즘' 카테고리의 다른 글

[C++] BOJ-1012  (0) 2019.10.11
[C++] BOJ-1012  (0) 2019.10.11
[C++] BOJ-7576  (0) 2019.09.09
[C++] BOJ-4963 문제풀이  (0) 2019.09.09
[C++] 카카오 프렌즈 컬러링북  (0) 2019.09.09