Algorithm, boj, 12403(경로찾기)
-
DFS
풀이
- 좌표를 입력받아 서로 연결된 간선의 정보를 list 배열에 넣는다.
- list배열의 내용을 dfs로 확인하며 확인된 노드는 result에 넣는다.
package org.baekjoon;
import java.util.*;
public class test11403 {
static ArrayList<Integer>[] list; // 입력받은 좌표의 간선
static boolean[] visited; // 방문여부 화인 배열
static int[][] result; // 출력 내용의 좌표가 들어간다
static int stage;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
result = new int[size][size];
list = new ArrayList[size];
for (int i=0; i<size; i++) {
list[i] = new ArrayList<Integer>();
}
for (int i=0; i<size; i++) {
for (int j=0; j<size; j++) {
if (sc.nextInt() == 1) {
list[i].add(j);
}
}
}
for(stage=0; stage<size; stage++) {
visited = new boolean[size];
dfs(stage);
}
for(int i=0; i<size; i++) {
for(int e:result[i])
System.out.print(e+" ");
System.out.println();
}
}
static void dfs(int node) {
if (list[node].isEmpty())
return;
for (int e:list[node]) {
if (visited[e] == false) {
visited[e] = true;
result[stage][e] = 1;
dfs(e);
}
}
}
}