녕의 학습 기록
백준_13023 ABCDE (DFS) 본문
분명 논리상 맞는 거 같은데, 자꾸 어디선가 틀림.
그래서 디버깅 해보고 손으로 계속 따라가다 보니까
빨간부분 코드가 있어야 풀 수 있다.
왜?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class BJ_13023 {
static ArrayList<Integer>[] arr;
static boolean[] visited;
static int result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int i, a, b;
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
arr = new ArrayList[n];
visited = new boolean[n];
for(i=0; i<n; i++) {
arr[i] = new ArrayList<>();
}
for(i=0; i<m; i++) {
st = new StringTokenizer(br.readLine(), " ");
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
arr[a].add(b);
arr[b].add(a);
}
result = 0;
for(i=0; i<n; i++) {
dfs(i,1);
if (result == 1) {
break;
}
}
System.out.println(new StringBuilder().append(result));
}
static void dfs(int k, int cnt) {
visited[k] = true;
if(result == 1 || cnt == 5) {
result = 1;
return;
}
for (int i : arr[k]) {
if(visited[i] == false) {
dfs(i, cnt+1);
}
}
visited[k] = false;
}
}
13023번: ABCDE
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
www.acmicpc.net
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_2178 미로 탐색 (BFS) (0) | 2024.01.23 |
---|---|
백준_1260 DFS와BFS (DFS & BFS) (1) | 2024.01.22 |
백준_2023 신기한 소수 (DFS) (0) | 2024.01.20 |
백준_11724 연결요소의 개수 (DFS) (0) | 2024.01.19 |
백준_10989 수 정렬하기3 (기수정렬) - 성공(풀이 참고) (0) | 2024.01.18 |