백준 1260 DFS/BFS

Seomingi·2023년 1월 24일
0

BFS/DFS

목록 보기
2/5

공통: 각 노드를 오름차순 정렬
ans_dfs,ans_bfs 배열 생성
visited 배열 생성

DFS(c)
v[c]에 방문표시하고
ans_dfs.append(c)
#해야할일
for n in adj[c]:
if v[n]==0 이라면
dfs(n)

BFS(s)
1. q,v,변수 생성
2. q에 초기데이터(들) 삽입,v[]표시, ans처리
while q:
q에서 데이터 한개 꺼냄
for (ex:네방향 or 8방향..) 조건 맞으면 q삽입(문제가 바뀌면 조건이 바뀌는거지 나머지 틀을 대부분 비슷하다)

from collections import deque

def dfs(v):
   visited_dfs[v] = True
   print(v,end=' ')

   for i in graph[v]:
       if not visited_dfs[i]:
           dfs(i)



def bfs(v):
   queue = deque([v])
   visited_bfs[v] = True

   while queue:
       v = queue.popleft()
       print(v,end=' ')
       for i in graph[v]:
           if not visited_bfs[i]:
               queue.append(i)
               visited_bfs[i] = True


n,m,v = map(int,input().split())
graph = [[] for i in range(n+1)]

for _ in range(m): #인접그래프 만드는 법
   s,e = map(int,input().split())
   graph[s].append(e)
   graph[e].append(s)

for i in graph: #번호가 작은것부터 방문하기위해 정렬
   i.sort()
print(graph)

visited_dfs = [False] * (n+1)
visited_bfs = [False] * (n+1)
dfs(v)
print("")
bfs(v)
profile
One thing after another

0개의 댓글

관련 채용 정보