DFS.
깊이 우선탐색 (Depth First Search).

스택을 활용한 방법이고, 코드만 외워서는 절대 활용불가하다.
무조건 이해를 해야함!!



 #include <stdio.h> 


int matrix[100][100];

int visit[100];

int n;


void dfs(int i)

{

int j;


visit[i] = 1; // i 번 정점은 방문 되었음 

printf("%d ", i);


for (j = 1; j <= n; j++)

if (matrix[i][j] == 1 && visit[j] == 0) {  // 정점 i 에서 j 로의 길이 있고 j 번 정점이 방문되지 않았으면  

dfs(j); // 재귀호출 

}

}


int main()

{

int ver1, ver2;

int start;


scanf("%d %d", &n, &start);


while (scanf("%d %d", &ver1, &ver2) != EOF) {

matrix[ver1][ver2] = matrix[ver2][ver1] = 1;

}


dfs(start);


return 0;

}



EOF는 end of file의 약자로서 define된 값은 -1 !

커맨드창에서 ctrl + z를 하면 입력된다.


'IT > 알고리즘' 카테고리의 다른 글

소수 확인 하기 (java)  (0) 2018.02.22

public boolean isPrime(int num) {

System.out.println("isPrime() :: num = " + num);

if (num % 2 == 0) {

System.out.println("num is even number");

return false;

}

for (int a = 3; a * a <= num; a += 2) {

System.out.println("a = " + a);

if (num % a == 0) {

return false;

}

}

return true;



'IT > 알고리즘' 카테고리의 다른 글

DFS (C)  (0) 2018.02.24

+ Recent posts