반응형
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <stack>
#include <vector>
#include <math.h>
using namespace std;
int map[51][51], check[10], path[10], p1;
void DFS(int cur, int fin){
if(cur==fin){
for(int i=0; path[i]!=0; i++){
printf("%d ",path[i]);
}
printf("\n");
}
else{
for(int i=1; i<=fin; i++){
if(map[cur][i]==1 && check[i]==0){
path[p1++] = i;
check[i] = 1;
DFS(i,fin);
check[i] = 0;
p1--;
path[p1] = 0;
}
}
}
}
int main() {
//freopen("input.txt.txt","rt",stdin);
int n, m, i, j, a,b;
scanf("%d %d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d %d", &a, &b);
map[a][b]=1;
}
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
printf("%d ",map[i][j]);
}
printf("\n");
}
check[1] = 1;
path[p1++] = 1;
DFS(1,n);
return 0;
}
output
-- 그래프 --
0 1 1 1 0
1 0 1 0 1
0 0 0 1 0
0 1 0 0 1
0 0 0 0 0
-- 탐색 path--
1 2 3 4 5
1 2 5
1 3 4 2 5
1 3 4 5
1 4 2 5
1 4 5
반응형
'Algorithm > etc' 카테고리의 다른 글
DFS 최소 비용 (DFS 매개변수 이용) (0) | 2022.01.15 |
---|---|
미로 찾기 DFS (0) | 2022.01.15 |
DFS 부분집합 찾기 (0) | 2022.01.14 |
이진트리 깊이우선탐색(DFS) (0) | 2022.01.14 |
재귀함수로 2진수 만들기 (0) | 2022.01.14 |