Baekjoon

Baekjoon 11403번 경로 찾기

ppwag 2020. 8. 27. 15:59

문제

https://www.acmicpc.net/problem/11403

걸린 시간

00 : 57 : 56

풀이

C++

#include <bits/stdc++.h>
#define INF 987654321
using namespace std;

int n;
int visited[100];
int matAdj[100][100];
int ans[100][100];

void dfs(int v){
    for(int w = 0; w < n; w++){
        if(matAdj[v][w] && !visited[w]){
            visited[w] = 1;
            dfs(w);
        }
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            cin >> matAdj[i][j];
    // dfs
    memset(ans, 0, sizeof(ans));
    for(int i = 0; i < n; i++){
        memset(visited, 0, sizeof(visited));
        dfs(i);
        for(int j = 0; j < n; j++)
            if(visited[j])
                ans[i][j] = 1;
    }
    // 출력
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout << ans[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}

한 정점에서의 탐색이 끝날 때 마다 방문 배열을 결과 배열에 반영한다.

이와 같은 작업을 모든 정점에서 반복해주면 된다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 1992번 쿼드트리  (0) 2020.08.27
Baekjoon 2178번 미로 탐색  (0) 2020.08.27
Baekjoon 19590번 비드맨  (0) 2020.08.25
Baekjoon 2096번 내려가기  (0) 2020.08.22
Baekjoon 11003 최솟값 찾기  (0) 2020.08.21

댓글