풀이
- 따로 어려운 부분은 없고 단순하게 bfs로 해결 가능한 문제
- 여기서 다시 기억해둘 것으로 2가지는
- IntStream.rangeClosed() 에는 map이 아닌 mapToObj인 것
- Collections로 생성한 배열에 초기 값을 넣어줄 땐 () 안에 Arrays.asList로 추가 가능하다는 것.
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class _2606 {
static List<List<Integer>> nodes;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int net = Integer.parseInt(br.readLine());
nodes = IntStream.rangeClosed(0,N).mapToObj(ArrayList<Integer>::new).collect(Collectors.toList());
for (int i=0; i<net; i++) {
int[] node = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
nodes.get(node[0]).add(node[1]);
nodes.get(node[1]).add(node[0]);
}
visit = new boolean[N+1];
// bfs
Deque<Integer> queue = new ArrayDeque<>(){{
add(1);
}};
visit[1] = true;
System.out.println(bfs(queue));
}
public static int bfs(Deque<Integer> queue){
int cnt = 0;
while (!queue.isEmpty()) {
int now = queue.pollFirst();
for (int num: nodes.get(now)) {
if (!visit[num]) {
queue.add(num);
visit[num] = true;
cnt++;
}
}
}
return cnt;
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 15649번] 구간 합 구하기 4 (0) | 2024.09.06 |
---|---|
[백준, 자바, 1926번] 그림 (0) | 2024.09.06 |
[백준, 자바, 15649번] N과 M (1) (0) | 2024.09.05 |
[프로그래머스, 자바, 1260번] DFS와 BFS (0) | 2024.09.05 |
[프로그래머스, 자바, 84512번] 모음 사전 (0) | 2024.09.04 |