Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

최's 먹공로그

BOJ1260 DFS와 BFS 본문

APS

BOJ1260 DFS와 BFS

ChoiSH313 2022. 5. 22. 22:53

<Solution>

1. 두개의 노드가 연결되어 있다는 어찌 표현할지 -> 2차원 배열에 연결되어 있는 노드는 1로 표현

1,2가 연결인 경우

0 1 0 0

1 0 0 0 이런식으로

2. visit은 방문한 노드만 체크 -> 1차원 배열로 노드만


<Source Code>

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 BOJ1260_BFSDFS {
	
	static int[] visit;
	static int[][] map;
	static int N, M;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		int V = Integer.parseInt(st.nextToken());
		// 인접한 곳 1로 표시
		map = new int[N+1][N+1];
		visit = new int[N+1];
		for(int i = 0; i < M; i++)
		{
			st = new StringTokenizer(br.readLine(), " ");
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			map[a][b] = 1;
			map[b][a] = 1;
		}
		dfs(V);
		System.out.println();
		visit = new int[N+1];
		bfs(V);
	}
	
	public static void dfs(int V) {
		System.out.printf(V + " ");
		visit[V] = 1;
		for(int i = 1; i <= N; i++) {
			// 이미 방문한 노드이거나 인접한 곳이 아닌경우 건너뛰기
			if(visit[i] == 1 || map[V][i] == 0)
				continue;
			dfs(i);
		}
	}
	
	public static void bfs(int V) {
		Queue<Integer> q = new LinkedList<>();
		q.add(V);
		visit[V] = 1;
		while(!q.isEmpty()) {
			V = q.poll();
			System.out.printf(V + " ");
			for(int i = 1; i <= N; i++) {
				if(visit[i] == 1 || map[V][i] == 0)
					continue;
				q.add(i);
				visit[i] = 1;
			}
		}
	}
}

 

'APS' 카테고리의 다른 글

BOJ2606 바이러스  (0) 2022.06.03
BOJ2178 미로탐색  (0) 2022.05.22
BOJ1018 체스판 다시 칠하기  (0) 2022.05.22
BOJ11559_Puyo Puyo C++  (0) 2021.05.23
BOJ11559_Puyo Puyo  (1) 2019.09.05