Skip to content

Latest commit

 

History

History
93 lines (77 loc) · 1.43 KB

File metadata and controls

93 lines (77 loc) · 1.43 KB
description 모서리 Check + DFS

1012. 유기농 배추

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int width;
int height;

int check(int (&visited)[50][50],int (&graph)[50][50], int k, int l)
{
    int result;
    if (graph[k][l] == 1 && visited[k][l] == 0)
    {
        visited[k][l] = 1; // 방문했음을 check
        if (k != 0)
        {
            check(visited, graph, k-1, l);
        }
        if (k!=(width-1))
        {
            check(visited, graph, k+1, l);
        }
        if (l != 0)
        {
            check(visited, graph, k, l-1);
        }
        if (l != (height-1))
        {
            check(visited, graph, k, l+1);
        }
        result = 1;
    }
    else // 이미 방문한 정점이면
    {
        result = 0;
    }
        
    return result;
}

void baechoo()
{
    int m, n, k;
    cin >> m >> n >> k;
    
    int visited[50][50] = {0,};
    int graph[50][50] = {0,};
    int answer = 0;
    for (int j=0; j<k; j++)
    {
        int x, y;
        cin >> x >> y;
        graph[x][y] = 1;
    }
    
    width = m;
    height = n;
    
    for (int k=0; k<m; k++)
    {
        for (int l=0; l<n; l++)
        {
            answer += check(visited, graph, k, l);
        }
    }
    cout << answer << "\n";
}


int main()
{
    int TC;
    cin >> TC;
    for (int i=0; i<TC; i++)
    {
        baechoo();
    }
    return 0;
}