lsk4393   4년 전

제가 컴파일 했을때는 답이 잘 나오는데 제출하면 틀렸다고 나오네요.

혹시, 제가 생각하지 못한 오류가 있을까요? 

고수님들 도와주세요 !

#include 
#include 
#include 
using namespace std;

int arr[50][50];
int visit[50][50];
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1 ,0 ,0};
int row, col;
vector answer;

void dfs(int r, int c)
{
    if (visit[r][c])
        return;
    else
        visit[r][c] = true;

    int next_r, next_c;

    for (int i = 0; i < 4; i++)
    {
        next_r = r + dx[i];
        next_c = c + dy[i];

        if (next_r >= 0 && next_r < row && next_c > 0 && next_c < col)
        {
            if (arr[next_r][next_c] == true && visit[next_r][next_c] == false)
            {
                dfs(next_r, next_c);
            }
        }
    }
}

int main()
{
    int T, bachu;
    int c, r;
    int cnt = 0;
    cin >> T;

    for (int tc = 0; tc < T; tc++)
    {
        cin >> col >> row >> bachu;
        memset(arr, 0, sizeof(int) * col);
        memset(visit, 0, sizeof(int) * col);
        cnt = 0;
        for (int reset = 0; reset < row; reset++)
        {
            memset(arr[reset], 0, sizeof(int) * row);
            memset(visit[reset], 0, sizeof(int) * row);
        }
        for (int i = 0; i < bachu; i++)
        {
            cin >> c >> r;
            arr[r][c] = 1;
        }
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < col; j++)
            {
                if (arr[i][j] == true && visit[i][j] == false)
                {
                    ++cnt;
                    dfs(i, j);
                }
            }
        }
        answer.push_back(cnt);
    }
    for (int i = 0; i < answer.size(); i++)
        cout << answer[i] << endl;

    return 0;
}

djm03178   4년 전

바로 아래에 코드 올리는 칸을 놔두고, 굳이 본문에 올리셔서 보기 힘들게 만들지 않으셔도 됩니다.

댓글을 작성하려면 로그인해야 합니다.