https://www.acmicpc.net/problem/2606
1. ๋ฌธ์ ์์ฝ
1๋ฒ์ด ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๋ฉด, 1๋ฒ๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฒํธ๊ฐ ๊ฐ์ผ๋๋ค. 4๋ฒ๊ณผ 7๋ฒ์ 1๋ฒ๊ณผ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฏ๋ก ๊ฐ์ผ๋์ง ์๋๋ค.
์ฐ๊ฒฐ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, 1๋ฒ์ ์์์ผ๋ก ๋ฐ์ด๋ฌ์ค์ ๊ฐ์ผ๋๋ ์ปดํจํฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ผ.
2. ํ์ด
๊ทธ๋ํ ๋ฌธ์ ์ด๋ค. ํด๋น ๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ค์ ๋ฐ๋ผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ ธ๋๋ค์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๊ฐ ์ ์๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ DFS, BFS ๋ชจ๋ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ธ์ ํ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
์ธ์ ๋ ธ๋ ๋ฐฉ๋ฌธ์ ํจ์จ์ ์ธ BFS๋ฅผ ์ฌ์ฉํ์๋ค. ์ ํ์ ์ธ BFS ํ์ ์ฌ์ฉํ์๋ค.
๊ทธ๋ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ธ์ ํ๋ ฌ, ์ธ์ ๋ฆฌ์คํธ๊ฐ ์๋ค. ๋๋ ์ธ์ ๋ฆฌ์คํธ๋ก ํ์ด๋ณด์๋ค.
3. ๋ฌธ์ ์
์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ํ์ด๋ณผ ๊ฒ
1. DFS
2. ์ธ์ ํ๋ ฌ
4. ์ฝ๋
BFS, ์ธ์ ๋ฆฌ์คํธ
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.StringTokenizer;
public class BOJ_2606_๋ฐ์ด๋ฌ์ค {
static boolean[] visited;
static List<List<Integer>> list = new ArrayList<> ();
static int N, ans;
static int cnt;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
cnt = Integer.parseInt(br.readLine());
visited = new boolean[N+1];
for (int i = 0; i <= N; i++) {
list.add(new ArrayList<>());
}
for (int i = 0; i < cnt; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
list.get(num1).add(num2); //์๋ฐฉํฅ ๊ทธ๋ํ
list.get(num2).add(num1);
}
bfs(1);
System.out.println(ans);
}
static void bfs(int start) {
Queue<Integer> queue = new ArrayDeque<>();
queue.add(start);
visited[start] = true;
while (!queue.isEmpty()) {
int front = queue.poll();
int len = list.get(front).size();
for (int i = 0; i < len; i++) {
int next = list.get(front).get(i);
if (visited[next]) continue;
queue.add(next);
ans++; //์ธ์ ๋
ธ๋ ๊ฐ์ ์นด์ดํธ
visited[next] = true;
}
}
}
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 15686 ์นํจ๋ฐฐ๋ฌ [Java] (0) | 2022.08.29 |
---|---|
[BOJ] 16637 ๊ดํธ์ถ๊ฐํ๊ธฐ [Java] (0) | 2022.08.28 |
[BOJ] 1697 ์จ๋ฐ๊ผญ์ง [Java] (0) | 2022.08.25 |
[BOJ] 1759 ์ํธ ๋ง๋ค๊ธฐ [Java] (0) | 2022.08.24 |
[BOJ] 10026 ์ ๋ก์์ฝ [Java] (0) | 2022.08.24 |