https://www.acmicpc.net/problem/11724
dfs ์ฝ๋
import java.util.Scanner;
public class Main {
static int N; // ์ ์
static int M; // ๊ฐ์
static int count; // ์ฐ๊ฒฐ ์์์ ๊ฐ์
static int graph[][]; // ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ
static boolean visit[]; // ๋ฐฉ๋ฌธ ์ฌ๋ถ ์ฒดํฌ
public static void dfs(int i) {
visit[i] = true;
for(int j=1; j<=N; j++) {
if(graph[i][j] == 1 && visit[j] == false) {
dfs(j);
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt();
M = scan.nextInt();
graph = new int[N+1][N+1];
visit = new boolean[N+1];
for(int i=1; i<=M; i++) {
int a = scan.nextInt();
int b = scan.nextInt();
graph[a][b] = graph[b][a] = 1;
}
for(int i=1; i<=N; i++) {
if(!visit[i]) {
dfs(i);
count ++;
}
}
System.out.println(count);
scan.close();
}
}
bfs ์ฝ๋
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int N; // ์ ์
static int M; // ๊ฐ์
static int count; // ์ฐ๊ฒฐ ์์์ ๊ฐ์
static int graph[][]; // ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ
static boolean visit[]; // ๋ฐฉ๋ฌธ ์ฌ๋ถ ์ฒดํฌ
public static void bfs(int i) {
Queue<Integer> q = new LinkedList<Integer>();
q.offer(i);
visit[i] = true;
while(!q.isEmpty()) {
int temp = q.poll();
for(int j=1; j<=N; j++) {
if(graph[temp][j] == 1 && visit[j] == false) {
q.offer(j);
visit[j] = true;
}
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt();
M = scan.nextInt();
graph = new int[N+1][N+1];
visit = new boolean[N+1];
for(int i=1; i<=M; i++) {
int a = scan.nextInt();
int b = scan.nextInt();
graph[a][b] = graph[b][a] = 1;
}
for(int i=1; i<=N; i++) {
if(!visit[i]) {
bfs(i);
count ++;
}
}
System.out.println(count);
scan.close();
}
}
ํ์ด
๊ธฐ์กด dfs ๋ฌธ์ ์ ๋์ผํ๋ค.
์ฐ๊ฒฐ ์์๋ ๊ทธ๋ํ์์ ์ ์ ๊ณผ ๊ฐ์ ์ด ๊ฒน์น์ง ์๋ ๋ถ๊ทธ๋ํ๋ก, ๋ชจ๋ ๋ ธ๋์์ ๋ํ ๊ฒฝ๋ก๋ ์กด์ฌํ๋๊ฑธ ๊ฐ๋ฆฌํจ๋ค.
์์ ๊ฐ์ ๊ทธ๋ํ์ ์ฐ๊ฒฐ์์๋ 4๊ฐ๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ์ ์ ์ ํ์ํ๋ฉด์, ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ผ๊ฒฝ์ฐ dfs์ฌ๊ทํจ์๋ฅผ ๋๊ณ , ์ฐ๊ฒฐ ์์๋ฅผ ++ํด์ค๋ค.
์ ์์ 1๋ฒ์ ๊ฒฝ์ฐ A4 ์ข์ธก ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ ์์๊ฐ 2๊ฐ๊ฐ ๋๋๋ฐ,, ์ง์ dfs๋ฌธ์ ์ ์ด๋ณด๋ฉด
dfs(1)
-dfs(2)
-dfs(5) ๊ฐ ํธ์ถ๋๊ณ
๋์ด์ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ด ์์ผ๋ฏ๋ก ๋น ์ ธ๋์์ ๋ค์ main ๋ฌธ์์ i=3๋ถํฐ ํ์ํ๋ค.(count ++)
dfs(3)
-dfs(4)
-dfs(6) ์ด ํธ์ถ๋๊ณ
๋ฉ์๋๋ ์ข ๋ฃ๋๋ค. (count ++)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๊ธฐ์ง๊ตญ ์ค์น(๊ทธ๋ฆฌ๋) (0) | 2020.02.07 |
---|---|
[๋ฐฑ์ค] 11586๋ฒ: ์ง์ ๊ณต์ฃผ๋์ ๋ง๋ฒ ๊ฑฐ์ธ(๋ฌธ์์ด) (0) | 2020.02.06 |
[๋ฐฑ์ค] 2262๋ฒ: ํ ๋๋จผํธ ๋ง๋ค๊ธฐ(๊ทธ๋ฆฌ๋) (0) | 2020.02.06 |
[๋ฐฑ์ค] 5218๋ฒ: ์ํ๋ฒณ ๊ฑฐ๋ฆฌ(๋ฌธ์์ด) (0) | 2020.02.06 |
[๋ฐฑ์ค] 11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ(dfs, bfs) (0) | 2020.02.05 |
๋๊ธ