본문 바로가기
스터디/알고리즘

촌수계산

by 세졍 2024. 3. 14.

 

 

bfs

1.양방향 연결로 인접배열 생성! 

2. 출발촌수에서 최소한으로 도착촌수에 가는 단계를 구한다

3.연결되어있지 않으면 -1

 

N = int(input())
a, b = map(int,input().split())
M = int(input())
adj = [[] for _ in range(N+1)]
visited = [0] * (N+1)

def bfs(start):
    cnt = 0
    queue = [start]
    while queue:
        t = queue.pop(0)
        if t == b:
            return visited[t]
        for i in adj[t]:
            if visited[i] == 0:
                queue.append(i)
                cnt += 1
                visited[i] = visited[t] + 1
    return -1



for _ in range(M):
    v1,v2 = map(int,input().split())  # 연결관계
    adj[v1].append(v2)
    adj[v2].append(v1)


print(bfs(a))

'스터디 > 알고리즘' 카테고리의 다른 글

수들의 합5  (0) 2024.03.18
수찾기  (0) 2024.03.18
숨바꼭질  (0) 2024.03.14
연결 요소의 개수  (0) 2024.03.10
카드2  (0) 2024.03.09