시작점 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return.
BFS로 푸는 문제.
내가 까먹을까봐 기록함.
풀이 출처 (설명 잘 돼있음. 문제는 내 이해력;;)
풀이
import java.util.*;
class Solution {
public int solution(int n, int[][] edge) {
int answer = 0;
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
int[] distance = new int[n + 1];
boolean[] visited = new boolean[n + 1];
for(int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}
for(int i = 0; i < edge.length; i++) {
graph.get(edge[i][0]).add(edge[i][1]);
graph.get(edge[i][1]).add(edge[i][0]);
}
visited[1] = true;
Queue<Integer> q = new LinkedList<>();
q.add(1);
while(!q.isEmpty()) { // 2 ~ n까지 도착하는 경로 구하기
int now = q.poll();
ArrayList<Integer> node = graph.get(now);
for(int i = 0; i < node.size(); i++) {
if(visited[node.get(i)] == false) {
q.add(node.get(i));
visited[node.get(i)] = true;
distance[node.get(i)] = distance[now] + 1;
}
}
}
Arrays.sort(distance);
int max = distance[distance.length - 1];
for(int i = 0; i < distance.length; i++) {
if(max == distance[i]) answer++;
}
return answer;
}
}
'알고리즘 > DFS & BFS' 카테고리의 다른 글
프로그래머스 - 무인도 여행 (자바) (0) | 2023.04.04 |
---|---|
백준 2573 - 빙산 (자바) (0) | 2023.03.01 |
[DFS] 백준 2468 - 안전 영역 (자바) (0) | 2023.01.10 |
DFS & BFS (0) | 2022.12.19 |