ArrayList<ArrayList<Integer>>로 구현한 건 잘했다...일단 너무 많은 걸 잘못했는데 ^^..
for (int i = 0; i <= n; i++)
arr.add(new ArrayList<>());
if (dep == 2) continue; 이 부분을 어디서 끊어줘야될지 헷갈렸다..result++; 이것도 어디서 해야될지 고민됐다..for (int next : arr.get(cur))package algo.ct.M12;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class BOJ_5567_결혼식_S2 {
static int n, m;
static ArrayList<ArrayList<Integer>> arr = new ArrayList<>();
static int result = 0;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine()); // 동기 수
m = Integer.parseInt(br.readLine()); // 리스트 길이
for (int i = 0; i <= n; i++)
arr.add(new ArrayList<>());
visited = new boolean[n+1];
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());
arr.get(a).add(b);
arr.get(b).add(a);
}
bfs(1);
System.out.println(result);
}
public static void bfs(int idx) {
Queue<int[]> q = new LinkedList<>();
q.add(new int[]{idx, 0});
visited[idx] = true;
while (!q.isEmpty()) {
int[] now = q.poll();
int cur = now[0];
int dep = now[1];
if (dep == 2) continue;
for (int next : arr.get(cur)) {
if (!visited[next]) {
visited[next] = true;
result++;
q.add(new int[]{next, dep + 1});
}
}
}
}
}