목차
경로탐색
방향그래프가 주어지면 1번 정점에서 N번 정점으로 가는 모든 경로의 가지 수를 출력하는 프 로그램을 작성하세요. 아래 그래프에서 1번 정점에서 5번 정점으로 가는 가지 수는
▣ 입력설명
첫째 줄에는 정점의 수 N(2<=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
import sys
sys.stdin=open("input.txt", "r")
def DFS(v):
global cnt, path
if v==n:
cnt+=1
for x in path:
print(x, end=' ')
print()
else:
for i in range(1, n+1):
if g[v][i]==1 and ch[i]==0:
ch[i]=1
path.append(i)
DFS(i)
path.pop()
ch[i]=0
if __name__=="__main__":
n, m=map(int, input().split())
g=[[0]*(n+1) for _ in range(n+1)]
ch=[0]*(n+1)
for i in range(m):
a, b=map(int, input().split())
g[a][b]=1
cnt=0
ch[1]=1
path=list()
path.append(1)
DFS(1)
print(cnt)
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[DFS활용] - 휴가 (2) | 2024.02.11 |
---|---|
[DFS 활용] - 최대 점수 구하기 (2) | 2024.02.11 |
[DFS기초] - 인접행렬(가중치 방향그래프) (0) | 2024.02.11 |
[DFS기초 ] - 수들의 조합 (4) | 2024.02.11 |
[DFS기초] - 조합 (2) | 2024.02.11 |