Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

게임 개발 메모장

53. 경로 탐색(DFS) 본문

문제 해결력 훈련

53. 경로 탐색(DFS)

Dev_Moses 2024. 1. 18. 22:10

 

 

▣ 입력예제 

 

5 9

1 2

1 3

1 4

2 1

2 3

2 5

3 4

4 2

4 5

 

 

▣ 출력예제

 

6

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int map[30][30], ch[30], cnt = 0, n;

void DFS(int v)
{
	if (v == n)  // * 재귀가 종료 지점에 왔느냐?
	{
		cnt++;
	}
	else
	{
		for (int i = 1; i <= n; ++i)
		{
			if (map[v][i] == 1 && ch[i] == 0)
			{
				ch[i] = 1; // 방문 체크
				DFS(i);
				ch[i] = 0; // 호출 스택 빠져 나오면 방문 체크 해제
			}
		}
	}
}

int main()
{
	int m, a,b,c;

	cin >> n >> m; // 정점, 간선 개수

	for (int i = 1; i <= m; ++i)
	{
		cin >> a >> b;
		map[a][b] = 1; // 가중치 그래프 ( 인접 행렬 )
	}

	ch[1] = 1; // 방문지점은 다시는 안가기 위해 체크배열을 둔다.
	DFS(1);
	cout << cnt;
}