문제
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 |
댓글