Til11
title: 2025-08-10 author: 강병호 date: 2025-08-10 category: TIL/강병호/2025/08 layout: post —
백준 Q5567
BFS를 통해 풀이
- 큐에서 노드 하나 꺼내기
- depth가 2면 친구의 친구이니 탐색 중단
- 현재 노드의 모든 인접 노드 탐색
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static class Node {
int v, d;
Node(int v, int d) {
this.v = v;
this.d = d;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int m = Integer.parseInt(br.readLine());
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
graph.get(a).add(b);
graph.get(b).add(a);
}
boolean[] visited = new boolean[n + 1];
Queue<Node> q = new ArrayDeque<>();
visited[1] = true;
q.add(new Node(1, 0));
int result = 0;
while(!q.isEmpty()) {
Node cur = q.poll();
if (cur.d == 2) continue;
for (int nx : graph.get(cur.v)) {
if (!visited[nx]) {
continue;
}
visited[nx] = true;
q.add(new Node(nx, cur.d + 1));
if (nx != 1){ {
result++;
}}
}
}
System.out.println(result);
}
}