문제풀이
[프로그래머스] 가장 먼 노드 Java
by AndoneKwon
2021. 4. 12.
import java.io.*;
import java.util.*;
class Solution {
//거리 BFS로 거리계산을 한다. 간선의 거리가 모두 동일함으로 다익스트라로 해결할 이유는 없음.
public void dj(int[] distance, List<List<Integer>> list, int n) {
boolean[] visited = new boolean[n+1];
Queue<Integer> pq = new ArrayDeque<>();
pq.add(1);
distance[1]=1;
while (!pq.isEmpty()) {
int now = pq.poll();
visited[now] = true;
for(int i=0;i<list.get(now).size();i++) {
int next = list.get(now).get(i);
if(visited[next])
continue;
visited[next]=true;
pq.add(next);
distance[next]+=distance[now]+1;
}
}
}
public int solution(int n, int[][] edge) {
int answer = 0;
List<List<Integer>> list = new ArrayList<>();
for(int i=0; i<n+1;i++) {
list.add(new ArrayList<Integer>());
}
for(int i=0;i<edge.length;i++) {
list.get(edge[i][0]).add(edge[i][1]);
list.get(edge[i][1]).add(edge[i][0]);
}
int[] distance = new int[n+1];
dj(distance, list, n);
Arrays.sort(distance);
int Max = distance[distance.length-1];
for(int i=0;i<distance.length;i++) {
if(distance[i]==Max)
answer++;
}
return answer;
}
}