사람들간의 직접적인 연관관계가 주어진다.
1 2
1 3
2 7
2 8
2 9
4 5
4 6
해당 연관관계를 양방향 관계로 서로 연결시켜주면된다.
최종적으로
1번의 친구들: [2, 3]
2번의 친구들: [1, 7, 8, 9]
3번의 친구들: [1]
4번의 친구들: [5, 6]
5번의 친구들: [4]
6번의 친구들: [4]
7번의 친구들: [2]
8번의 친구들: [2]
9번의 친구들: [2]
이후에 설정된 친구들 간의 관계에서
7 3
시작친구 7 과 3 관계에서 몇 촌인지 구하면 된다.private static void bfs(int start, int target) {
Queue<int[]> queue = new LinkedList<>();
boolean[] visited = new boolean[TOTAL_PERSON_COUNT + 1];
queue.offer(new int[]{start, 0});
visited[start] = true;
while (!queue.isEmpty()) {
int[] current = queue.poll();
int node = current[0];
int count = current[1];
if (node == target) {
System.out.println(count);
return;
}
for (int next : GRAPH[node]) {
if (!visited[next]) {
queue.offer(new int[]{next, count + 1});
visited[next] = true;
}
}
}
for (int next : GRAPH[node]) {
if (!visited[next]) {
queue.offer(new int[]{next, count + 1});
visited[next] = true;
}
}
if (node == target) {
System.out.println(count);
return;
}