[백준] 5567번 결혼식 - Java[BFS]
문제 출처
https://www.acmicpc.net/problem/5567
※ 풀이
상근이의 친구의 친구들의 숫자를 세는 문제이다.
정점을 친구들의 학번, 간선을 친구 관계로 보았을 때 그래프 탐색으로 풀 수 있는 문제이다.
여기서는 BFS 로 풀었다.
※ 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
static boolean[] visited = new boolean[501];
static int[] dist = new int[501];
static int answer = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int m = Integer.parseInt(br.readLine());
int[][] data = new int[n + 1][n + 1];
while (m > 0) {
m--;
String[] split = br.readLine().split(" ");
int a = Integer.parseInt(split[0]);
int b = Integer.parseInt(split[1]);
data[a][b] = 1;
data[b][a] = 1;
}
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
dist[1] = 0;
visited[1] = true;
while (!queue.isEmpty()) {
int nowNode = queue.remove();
if(dist[nowNode]<2) {
int[] nextNodes = data[nowNode];
for (int i = 0; i < nextNodes.length; i++) {
if (nextNodes[i] == 1 && !visited[i]) {
visited[i] = true;
dist[i] = dist[nowNode] + 1;
answer++;
queue.add(i);
}
}
}
}
System.out.println(answer);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 14697번 방 배정하기 - Java[브루트포스] (0) | 2021.06.12 |
---|---|
[백준] 1059번 좋은 구간 - Java[브루트포스] (0) | 2021.06.12 |
[백준] 10816번 숫자 카드2 - Java (0) | 2021.06.09 |
[백준] 9012번 괄호 - Java[스택] (0) | 2021.06.09 |
[백준] 2798번 블랙잭 - Java[브루트포스] (0) | 2021.06.08 |