← Back to List

1012번: 유기농 배추 ↗

Solutions

C++14
756 B | 756 chars
#include <bits/stdc++.h>

using namespace std;

int T,M,N,K,a,b,ar[55][55],cnt;

int dy[4]={1,-1,0,0};
int dx[4]={0,0,1,-1};

void dfs(int y,int x) {
	ar[y][x]=0;

	for(int d=0; d<4; d++) {
		int ny = y + dy[d];
		int nx = x + dx[d];
		
    if(0 > ny || ny >= N || 0 > nx || nx >= M || ar[ny][nx] != 1) continue;		
    dfs(ny,nx);
	}
}

int main() {
  ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

	cin >> T;
	
  while(T--) {
		cnt=0;
		cin >> M >> N >> K;
	  for(int y=0; y<N; y++)
      for(int x=0; x<M; x++)
        ar[y][x]=0;
		
		for(int i = 0; i < K; i++) {
			cin >> a >> b;
			ar[b][a]=1;
		}

		for(int y=0; y<N; y++) {
			for(int x=0; x<M; x++) {
				if(ar[y][x] == 1) {
					cnt++;
					dfs(y,x);
				}
			}
		}

		cout << cnt << '\n';
	}
}