Hikenny25

6일차 - 노드의 거리 본문

SW Expert Academy/Programming - Intermediate

6일차 - 노드의 거리

hikenny 2023. 12. 16. 16:42
from collections import deque

class Graph:
    def __init__(self, size):
        self.size = size
        self.matrix = [[0] * size for _ in range(size)]
        self.visited = [0] * size
        self.predecessor = [0] * size
    
    def addEdge(self, v1, v2):
        self.matrix[v1][v2] = self.matrix[v2][v1] = 1
    
    def BFS(self, start, goal):
        q = deque([start])
        self.visited[start] = 1

        while q:
            k = q.pop()
            for i in range(self.size):
                if self.matrix[i][k] == 1 and self.visited[i] == 0:
                    self.visited[i] = 1
                    q.appendleft(i)
                    self.predecessor[i] = self.predecessor[k] + 1
        
        return self.predecessor[goal]

for t in range(int(input())):
    v, e = map(int, input().split())
    g = Graph(v)

    for _ in range(e):
        v1, v2 = map(int, input().split())
        g.addEdge(v1-1, v2-1)

    start, goal = map(int, input().split())
    print(f"#{t+1} {g.BFS(start-1, goal-1)}")

 

기본적인 BFS 최단거리 문제이다~ 매우 쉬움!!

'SW Expert Academy > Programming - Intermediate' 카테고리의 다른 글

3일차 - 회문1  (0) 2023.12.16
3일차 - String  (0) 2023.12.16
6일차 - 피자 굽기  (0) 2023.12.16
6일차 - 미로의 거리  (0) 2023.12.14
6일차 - 회전  (0) 2023.12.13
Comments