Jun's Development Journey
[BOJ] 2644 촌수계산 본문
문제
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진
www.acmicpc.net
풀이
import java.io.*;
import java.util.*;
public class Main {
static boolean[][] cs;
static boolean[] visited;
static int cnt=-1;
static void cs_dfs(int st, int dt, int N, int c) {
if(st==dt) {
cnt = c;
return;
}
for(int i=1;i<N+1;i++) {
if(cs[st][i] && !visited[i]) {
visited[i] = true;
cs_dfs(i,dt,N,c+1);
visited[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N, cp1,cp2,m;
StringTokenizer st;
N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine()," ");
cp1 = Integer.parseInt(st.nextToken());
cp2 = Integer.parseInt(st.nextToken());
m = Integer.parseInt(br.readLine());
cs = new boolean[N+1][N+1];
visited = new boolean[N+1];
for(int i=0;i<m;i++) {
st = new StringTokenizer(br.readLine()," ");
int from = Integer.parseInt(st.nextToken());
int to = Integer.parseInt(st.nextToken());
cs[from][to] = cs[to][from] = true;
}
cs_dfs(cp1,cp2,N,0);
System.out.println(cnt);
}
}
'BOJ > DFS' 카테고리의 다른 글
[BOJ] 1260 DFS, BFS (0) | 2021.02.26 |
---|---|
[BOJ] 2606번 바이러스 (0) | 2021.02.18 |
[BOJ] 11724번 연결 요소의 갯수 (0) | 2019.08.30 |
[BOJ] 11403번 경로 찾기 (0) | 2019.08.30 |
[BOJ] 14502번 연구소 (0) | 2019.07.30 |