사용 알고리즘: bfs
사용 언어: java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_bj_2644_촌수계산 {
static int allPeople, a, b;
static int result;
static ArrayList<Integer>[] al ;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
allPeople = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
a = Integer.parseInt(st.nextToken())-1;
b = Integer.parseInt(st.nextToken())-1;
al = new ArrayList[allPeople];
for (int i = 0; i < al.length; i++) {
al[i] = new ArrayList<Integer>();
}
int m = Integer.parseInt(br.readLine());
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int a1 = Integer.parseInt(st.nextToken())-1;
int b1 = Integer.parseInt(st.nextToken())-1;
al[a1].add(b1);
al[b1].add(a1);
}
// result = allPeople*allPeople;
visited = new boolean[allPeople];
visited[a] = true;
bfs(a);
System.out.println(result);
}
private static void bfs(int a) {
Queue<int[]> q = new ArrayDeque<>();
q.offer(new int[] {a, 0}); //시작점, 촌수
while (!q.isEmpty()) {
int[] p = q.poll();
//p[o] : 시작점, p[1] = 카운트
if(p[0] == b){
result = p[1];
return;
}
for (int cur : al[p[0]]) {
if(visited[cur]) continue;
q.offer(new int[] {cur,p[1]+1});
visited[cur] = true;
}
}
result = -1;
}
}
이슈:
잡고 들어올리기!!!!!!
static에서 ArrayList<타입>[] al;
'알고리즘 > 백준' 카테고리의 다른 글
11559_Puyo Puyo 뿌요뿌요 - 원샷원킬~ (2) | 2024.03.05 |
---|---|
2468_안전 영역 (1) | 2024.01.24 |
5567_결혼식 ** (0) | 2024.01.21 |
1920_수 찾기 ** (0) | 2024.01.21 |
2583_영역 구하기 ** (0) | 2024.01.19 |