import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
public class FarNode {
private ArrayList<ArrayList<Integer>> list;
private boolean[] visit;
private int[] d;
public int solution(int n, int[][] edge) {
d = new int[n + 1];
visit = new boolean[n + 1];
list = new ArrayList<>();
list.add(new ArrayList<>());
for (int i = 0; i < n; i++) {
list.add(new ArrayList<>());
}
for (int[] e : edge) {
list.get(e[0]).add(e[1]);
list.get(e[1]).add(e[0]);
}
bfs();
return count();
}
private void bfs() {
Queue<Integer> queue = new LinkedList<>();
int s = 1;
visit[s] = true;
queue.offer(s);
while (!queue.isEmpty()) {
s = queue.poll();
for (int i = 0; i < list.get(s).size(); i++) {
int temp = list.get(s).get(i);
if (!visit[temp]) {
queue.offer(temp);
visit[temp] = true;
d[temp] = d[s] + 1;
}
}
}
}
private int count() {
Arrays.sort(d);
int max = d[d.length - 1], cnt = 0;
for (int ele : d) {
if (max == ele) {
cnt++;
}
}
return cnt;
}
}
- BFS를 사용하여 해결
그래프를 생성할 때, 이중배열보다 이중리스트가 좋음