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;
}