๋ฐ์ํ
https://www.acmicpc.net/problem/1260
์ฝ๋
import java.util.*;
public class Main {
static int map[][];
static boolean [] visit;
static int n, m, v;
// ์ธ์ ํ๋ ฌ
public static void dfs(int i) {
visit[i] = true; // ํ์์ ์์ํ ๋ฒํธ v๋ ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก true๋ก ์ค์
System.out.print(i + " ");
for(int j=1; j<=n; j++) {
if(map[i][j] == 1 && visit[j] == false)
dfs(j); // ๋ด๊ฐ ์ฐพ์ ๊ฒฝ๋ก๊ฐ ๋ง์ฝ ๋ค๋ฅธ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด ๋ฐ๋ก ๋ค์ ๊ณณ์ผ๋ก ์ด๋์ํค๊ณ , ์์ผ๋ฉด ๋ค์ ์ฌ๊ทํธ์ถ๋ก ๋์์ด.
}
}
// ์ธ์ ํ๋ ฌ
public static void bfs(int i) {
Queue<Integer> q = new LinkedList<Integer>();
q.offer(i);
visit[i] = true; // ๋ฐฉ๋ฌธํ ์์น๋ ์์์ผํ๋ฏ๋ก ์ฒดํฌํ๊ธฐ ์ํด visit ํ์
while(!q.isEmpty()) { // ํ๊ฐ ๋น์ด์์๋๊น์ง
int temp = q.poll(); // ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฌธํ ์์น๋ ๋นผ์ค๋ค.
System.out.print(temp + " ");
for(int k=1; k<=n; k++) {
if(map[temp][k] == 1 && visit[k] == false) {
q.offer(k);
visit[k] = true; // true๋ฉด ๋ฐฉ๋ฌธํ๊ฒ
}
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt(); // ์ ์
m = scan.nextInt(); // ๊ฐ์
v = scan.nextInt(); // ํ์ ์์ฅํ ์ ์ ์ ๋ฒํธ
map = 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();
map[a][b] = map[b][a] = 1;
}
dfs(v);
for(int i=1; i<=n; i++)
visit[i] = false;
System.out.println();
bfs(v);
scan.close();
}
}
ํ์ด
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11656๋ฒ: ์ ๋ฏธ์ฌ ๋ฐฐ์ด (0) | 2020.01.22 |
---|---|
[๋ฐฑ์ค] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค(DFS, BFS) (0) | 2020.01.22 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋ ๋ฐ๋จน๊ธฐ (2) | 2020.01.22 |
[๋ฐฑ์ค] 10815๋ฒ: ์ซ์ ์นด๋ (0) | 2020.01.22 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2020.01.22 |
๋๊ธ