2019~2020/자료구조

그래프의 탐색

유진 2019. 8. 12. 16:16
반응형

(1) 깊이 우선 탐색 (DFS)

/*
08/12 그래프 탐색 
*/
#include<stdio.h>

int n; //정점의 총 개수 
int map[30][30]; // 인접행렬 
int visit[30]; //방문 여부를 나타내는 행렬 

void DFS(int v){  
	int i;
	
	visit[v] = 1; // 정점 v를 방문했다고 표시 
	for(i=1; i <= n; i++){
		// 정점 v와 정점 i가 연결 되었고, 정점 i를 방문하지 않는다면  
		if(map[v][i]==1 && !visit[i]){
			printf("%d에서 %d로 이동 \n",v,i);
			DFS(i); // 이동된 정점 i에서 다시 탐색 시작 
		}
	}
}

int main(){
	int start;// 시작 정점
	int v1,v2;
	
	printf("정점의 총 개수와 시작 정점을 입력하세요. :");
	scanf("%d %d", &n, &start);
	
	while(1){
		printf("연결한 두 정점을 입력하세요. (예 3 4): ");
		scanf("%d %d", &v1, &v2);
		if(v1==-1 && v2==-1) break;
		map[v1][v2] = map[v2][v1] = 1;
	} 
	DFS(start); //DFS 시작! 
	
	return 0;	
}
반응형