๋ฌธ์
https://www.acmicpc.net/problem/13023
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class BOJ_13023 {
static int n, m, parents[];
static boolean result = false;
static List<Integer>[] graph;
static boolean[] visited;
public static void dfs(int start, int cnt, boolean[] visited) {
if(cnt == 5) {
result = true;
return;
}
visited[start] = true;
for(int i = 0; i < graph[start].size(); i++) {
int now = graph[start].get(i);
if(!visited[now]) {
visited[now] = true;
dfs(now, cnt+1, visited);
visited[now] = false;
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
graph = new ArrayList[n];
for(int i = 0; i < n; i++) {
graph[i] = new ArrayList<>();
}
for(int i = 0; i < m; i++) {
st = new StringTokenizer(in.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
graph[a].add(b);
graph[b].add(a);
}
for(int i = 0; i < n; i++) {
dfs(i, 1, visited = new boolean[n]);
if(result) {
System.out.println(1);
return;
}
}
System.out.println(0);
}
}
๐ DFS ๋ฌธ์
- graph๋ผ๋ ์ด๋ฆ์ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ฃผ์๊ณ , a -> b, b -> a ๋ ๋ฐฉํฅ ๋ชจ๋ ํํํ๋ค.
- 0๋ถํฐ n-1๊น์ง์ ๋ชจ๋ ์ ์ ์์์ ์ผ๋ก ํ์ฌ์ dfs ๋ฉ์๋๋ฅผ ํตํด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ค์ ํ์ธํ๋ค.
- dfs ๋ฉ์๋์์๋ graph๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ด์ง ์ ๋ค๋ก์ ํ์์ ์งํํ๋๋ฐ,
ํ์ํ๋ ค๋ ์ ์ visited๊ฐ false๋ผ๋ฉด ์ด์ ์ ์๋๋ก ํ์๊ณ , cnt๋ก ์ด์ด์ง ์ ์ ๊ฐ์๋ฅผ ๋์ ํ๋ค.
cnt๊ฐ 5๊ฐ ๋์๋ค๋ฉด ํ๋์ ์น๊ตฌ ๊ด๊ณ๋ฅผ ์ฐพ์ ๊ฒ์ด๋ฏ๋ก result๋ฅผ true๋ก ๋ฐ๊พผ ํ ๋ฆฌํดํ๋ค.
โ๏ธ ๋ฐ๋ก ์ถ์ฒ
[๋ฐ๋ก 1]
12 10
0 1
0 2
0 3
0 4
0 5
6 7
7 8
8 9
9 10
10 11
[๋ฐ๋ก 2]
5 4
0 1
1 2
2 3
3 0
๐ก ํผ๋๋ฐฑ
- ๊ผญ A->B->C->D->E ์ ๊ด๊ณ๋ฅผ ์ฑ๋ฆฝํด์ผ ํ๊ณ ,
A->B, A->C->D->E ์ ๊ฐ์ ๊ด๊ณ๋ ๋ง์ง ์๋ค๋ ๊ฒ..!!๋ง ์๊ฐํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ์ต์ ํ์์ค ๊ฐ์ BOJ #19598 (0) | 2022.08.31 |
---|---|
[Java Algorithm] ๋์ 2 BOJ #2294 (0) | 2022.08.31 |
[Java Algorithm] ์ ๋ก์์ฝ BOJ #10026 (0) | 2022.08.31 |
[Java Algorithm] ํ์ถ BOJ #3055 (0) | 2022.08.31 |
[Java Algorithm] ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? (0) | 2022.08.31 |
๋๊ธ