
2606๋ฒ: ๋ฐ์ด๋ฌ์ค
์ฒซ์งธ ์ค์๋ ์ปดํจํฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ปดํจํฐ์ ์๋ 100 ์ดํ์ด๊ณ ๊ฐ ์ปดํจํฐ์๋ 1๋ฒ ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋ค. ๋์งธ ์ค์๋ ๋คํธ์ํฌ ์์์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ ์์ ์๊ฐ ์ฃผ์ด
www.acmicpc.net
๋ฌธ์

์์

ํ์ด
DFS(๊น์ด ์ฐ์ ํ์) ์ BFS(๋์ด ์ฐ์ ํ์)์ ํ์ฉํ ๋ํ์ ์ธ ๋ฌธ์ ์ด๋ค.
[๋ฐฑ์ค] 1260๋ฒ : DFS์ BFS
1260๋ฒ: DFS์ BFS ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค.
pids.tistory.com
1260๋ฒ ๋ฌธ์ ๋ฅผ ํตํด์ DFS์ BFS์ ๊ตฌ์กฐ์ ๋ฐฉ์์ ์ดํดํ๋ค๋ฉด ํฌ๊ฒ ์ด๋ ต์ง์์ ๋ฌธ์ ์ด๋ค.
์ฌ์ค ์ด๋ฒ ๋ฌธ์ ์์๋ DFS์ BFS ์ด๋ค๊ฑธ ์ฌ์ฉํด๋ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
์์ค ์ฝ๋
๋ฐฉ๋ฒ 1 : DFS
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N; // ์ปดํจํฐ์ ์ ( ์ ์ ์ ์ )
static int M; // ์ปดํจํฐ ์์ ์ ( ๊ฐ์ ์ ์ )
static int cnt = 0;
static int[][] check;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
check = new int[101][101];
visit = new boolean[101];
for (int i = 1; i <= M; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
check[x][y] = check[y][x] = 1;
}
System.out.println(DFS(1));
}
public static int DFS(int start) {
visit[start] = true;
for (int i = 1; i <= N; i++) {
if (check[start][i] == 1 && visit[i] == false) {
cnt++;
DFS(i);
};
}
return cnt;
}
}
๋ฐฉ๋ฒ 2 : BFS
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static int N; // ์ปดํจํฐ์ ์ ( ์ ์ ์ ์ )
static int M; // ์ปดํจํฐ ์์ ์ ( ๊ฐ์ ์ ์ )
static int cnt = 0;
static int[][] check;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
check = new int[101][101];
visit = new boolean[101];
for (int i = 1; i <= M; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
check[x][y] = check[y][x] = 1;
}
System.out.println(BFS(1));
}
public static int BFS(int start) {
Queue<Integer> q = new LinkedList<>();
q.offer(start);
visit[start] = true;
while (!q.isEmpty()) {
int tmp = q.poll();
for (int i = 1; i <= N; i++) {
if (check[tmp][i] == 1 && visit[i] == false) {
q.offer(i);
visit[i] = true;
cnt++;
};
}
}
return cnt;
}
}'๐ Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐฑ์ค] 10773๋ฒ : ์ ๋ก (0) | 2023.01.13 |
|---|---|
| [๋ฐฑ์ค] 10845๋ฒ : ํ (JAVA) (1) | 2023.01.12 |
| [๋ฐฑ์ค] 11726๋ฒ : 2รn ํ์ผ๋ง (0) | 2023.01.10 |
| [๋ฐฑ์ค] 2579๋ฒ : ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2023.01.10 |
| [๋ฐฑ์ค] 9093๋ฒ : ๋จ์ด ๋ค์ง๊ธฐ (1) | 2023.01.08 |