728x90
DFS(깊이 우선 탐색)
- 그래프 깊이에 따라 우선적으로 탐색(깊은 부분부터)
과정
1. 탐색
4방향 탐색
ex ) 우하좌상
dr = [1,0,-1,0 ]
dc = [ 0,-1,0,1]
for i in range(4):
nextr = r+ dr[i]
nextc = c+ dc[i]
를 응용하여 탐색 알고리즘을 만들어주자
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 | def search(s): stack.append(s) visited[s] = 1 while stack: if s == g: return 1 else: for i in node[s]: if not visited[i]: visited[i] = 1 stack.append(i) s = stack.pop() return 0 for t in range(int(input())): v, e = map(int, input().split()) visited = [0] * (v + 1) node = [[] for _ in range(v + 1)] stack = [] for _ in range(e): start, end = map(int, input().split()) node[start].append(end) s, g = map(int, input().split()) print("#{} {}".format(t + 1, search(s))) | cs |
728x90
'알고리즘 > SWAE' 카테고리의 다른 글
[Python] 5097. 회전, 5099. 피자 굽기, 5102. 노드의 거리, 5105 미로의 거리 (0) | 2021.03.05 |
---|---|
[Python] [D3] 1225. 암호생성기 ( 큐 ) (0) | 2021.03.04 |
[Python] - D2 - 2005. 파스칼의 삼각형 (0) | 2021.02.23 |
[Python - D1] 2063.중간값 찾기/ 2068.최대수 구하기/ 2070.큰 놈 작은 놈, 같은 놈/ 2071. 평균값 구하기 (0) | 2021.02.22 |
[SWAE-Python] 4861. 회문1/4864. 문자열 비교/4865. 글자수 (0) | 2021.02.18 |