본문 바로가기
알고리즘/dfs,bfs

[파이썬🐍] 백준 2644 : 촌수계산

by 코딩개미뚠뚠 2021. 4. 11.
반응형

생각이 꼬여서 푸는 데 좀 걸렸다ㅜㅜ

from collections import deque
n = int(input())
a, b = map(int, input().split())
m = int(input())
matrix = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)

for _ in range(m):
    x, y = map(int, input().split())
    matrix[x].append(y)
    matrix[y].append(x)

def bfs(v, target):
    count = 0
    q = deque([[v, count]])
    while q:
        value = q.popleft()
        v = value[0]
        count = value[1]
        if v == target:
            return count

        if not visited[v]:
            count += 1
            visited[v] = True
            for i in matrix[v]:
                if not visited[i]:
                    q.append([i, count])
    return -1

print(bfs(a, b))

내가 생각하는 코드의 핵심!↓

        if not visited[v]:
            count += 1
            visited[v] = True
            for i in matrix[v]:
                if not visited[i]:
                    q.append([i, count])

이 부분에서 count+=1 이 코드를 맨 아래에다가 넣었는데 이럼 안된다

연결 되어 있는 부분 전부다 계산하기 때문!

 

 

반응형

댓글