자료구조와 알고리듬 With Java/[Study] BAEKJOON 프로그래머스 CodeUp LeetCode
DFS 촌수 찾기 (오류 수정 전)
계란💕
2022. 4. 22. 15:49
Ex)
<hide/>
import java.util.Scanner;
public class DegreeOfKinship {
/*
입력코드
9
7 3
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6
출력
3
*/
static int MAX_COUNT = 101;
static int VCnt;
static int StartVertax;
static int TargetVertax;
static int flag;
static int[][] AdjMatrix = new int[MAX_COUNT][MAX_COUNT];
static int[] VisitMarix = new int[MAX_COUNT];
static int ECnt, uCnt = 0;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int uV1, uV2;
VCnt = scan.nextInt(); // 사람 수
uV1 = scan.nextInt();
uV2 = scan.nextInt();
ECnt = scan.nextInt(); // 관계 수
StartVertax = uV1 <= uV2 ? uV2 : uV1; // 큰값에서 시작
TargetVertax = uV1 <= uV2 ? uV1 : uV2; //??
for(int i = 1; i <= ECnt; ++i) {
int x = scan.nextInt();
int y = scan.nextInt();
AdjMatrix[x][y] = 1;
AdjMatrix[y][x] = 1;
}
DFSmethod(StartVertax);
if(0 == flag ) {
System.out.println(-1);
}
}
public static void DFSmethod(int _CurrVertax) {
VisitMarix[_CurrVertax]= 1;
for(int i = 1; i <= VCnt; ++i){
if(TargetVertax == _CurrVertax) {
flag = 1;
System.out.println(uCnt);
return;
}
if(1 ==AdjMatrix[_CurrVertax][i] && 0 == VisitMarix[i] ) {
++uCnt;
System.out.printf( "[%d]: %d => %d\n", uCnt, _CurrVertax, i );
DFSmethod(i);
}
}
}
}
Note) 에러 수정하기..
target