즉, 선이 많을때는 인접행렬을, 그렇지 않을때는 둘다 매우 많을때는 인접 리스트로 구현하자.
이게, List로 배열을 만들어 쓰는 예시이다.
public static int BFS(int [][]graph, int n)
{
Queue<Integer> q = new LinkedList<>();
boolean [] visited = new boolean[n+1];
int cnt = 1;
q.add(1);
visited[1] = true;
while (!q.isEmpty())
{
int now = q.poll();
for (int i = 1; i<n+1 ; i++)
{
if (graph[now][i] == 1 && visited[i] == false)
{
q.add(i);
visited[i]=true;
cnt+=1;
}
}
}
return Math.abs(cnt*2 - n);
}
이런 식으로.
'코딩테스트 > JAVA' 카테고리의 다른 글
DP 팁 (0) | 2024.10.10 |
---|---|
투 포인터, 슬라이싱 윈도우 (1) | 2024.09.28 |
특정 조건의 값(배열에 없는, 선택할 떄?) - 이진탐색 (1) | 2024.09.13 |
문자열 (0) | 2024.08.07 |
자바 문법 - 배열, 정렬, set (2) | 2024.07.24 |