64.경로탐색 DFS

강지훈·2021년 12월 9일
0

첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다. 그 다음부터 M줄에 걸쳐 연
결정보가 주어진다.
▣ 출력설명
총 가지수를 출력한다.
▣ 입력예제 1
5 9
1 2
1 3
1 4
2 1
2 3
2 5
3 4
4 2
4 5
▣ 출력예제 1
6

#include
using namespace std;
int n,map[25][25],ch[25],cnt=0;
void DFS(int v){
int i;
if(v==n){
cnt++; //종료지점이 되면 cnt++ 해준다
}
else {
for(i=1;i<=n;i++){
if(map[v][i]==1 && ch[i]==0){
ch[i]=1; //ch 방문했다고 체크
DFS(i);
ch[i]=0; //ch 방문해제
}
}
}

}
int main() {
int i,a,b,m; // 노드와 간선
cin >>n>> m;

//인접행렬 세팅 
for(i=1;i<=m;i++){
	cin>>a>>b;
	map[a][b]=1;
} 
ch[1]=1; //1번 출발이니 1번은 방문했다. 
DFS(1);
cout<<cnt;
return 0;

}

profile
never stop

0개의 댓글