본문 바로가기
Algorithm(BOJ, C)/Graph

[백준_11403] 경로 찾기 c

by kurooru 2024. 11. 23.
문제

풀이
#include <stdio.h>
#define EXIT_SUCCESS    0
#define MAX_VECTOR_NUM  100
#define NOT_VISITED     0
#define VISITED         1
#define NOT_CONNECTED   0
#define CONNECTED       1

int n;
int connection[MAX_VECTOR_NUM][MAX_VECTOR_NUM] = { NOT_CONNECTED };
int visited[MAX_VECTOR_NUM] = { NOT_VISITED };

void cleanUpVisited()
{
    for (int i = 0; i < n; i++) {
        visited[i] = NOT_VISITED;
    }
}

void dfs(int currVec)
{   
    for (int i = 0; i < n; i++) {
        if (connection[currVec][i] && !visited[i]) {
            visited[i] = VISITED;
            dfs(i);
        }
    }
}

void simulate(int currVec)
{   
    cleanUpVisited();

    dfs(currVec);
    
    for (int i = 0; i < n; i++) {
        printf("%d ", visited[i]);
    }
    printf("\n");
}

int main() 
{

    // 0) 입력
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &connection[i][j]);
        }
    }

    // 1) 각 점에 대해 simulate(dfs), 동시에 출력
    for (int i = 0; i < n; i++) {
        simulate(i);
    }

    return EXIT_SUCCESS;
}

 

'Algorithm(BOJ, C) > Graph' 카테고리의 다른 글

[백준_11725] 트리의 부모 찾기 c  (0) 2024.12.07
[백준_1697] 숨바꼭질 c  (0) 2024.11.24
[백준_11724] 연결 요소의 개수 c  (0) 2024.11.17