웹찢남

[백준 1260 DFS와 BFS] PYTHON 본문

백준 Algorithm

[백준 1260 DFS와 BFS] PYTHON

harry595 2021. 2. 26. 23:53

 

bfs랑 dfs를 둘다 사용해보는 문제다.

bfs의 경우 너비 우선 탐색이라 시작 노드에 연결된 모든 노드를 탐색한 후 

맨 앞의 노드를 기준으로 또 탐색하는 방식이다.

 

bfs의 경우 깊이 우선 탐색으로 시작 노드에 연결된 맨 앞의 노드를 찾고

그 앞의 노드와 연결된 맨 앞의 노드를 탐색하는 방식이다.

 

def dfs(V):
    visit_list[V]=1
    print(V,end=' ')
    for i in range(1,N+1):
        if(matrix[V][i]==1 and visit_list[i]==0):
            dfs(i)
            
def bfs(V):
    Q=[V]
    visit_list[V]=0
    while(Q):
        V=Q.pop(0)
        print(V,end=' ')
        for i in range(N+1):
            if(visit_list[i]==1 and matrix[V][i]==1):
                Q.append(i)
                visit_list[i]=0
    
if __name__ == "__main__":
    N,E,V=map(int,input().split())
    matrix=[[0]*(N+1) for i in range(N+1)]
    for i in range(E):
        a,b=map(int,input().split())
        matrix[a][b]=matrix[b][a]=1
    visit_list=[0]*(N+1)
    dfs(V)
    print()
    bfs(V)
Comments