[백준] 18352번 - 특정 거리의 도시 찾기

yerimstar·2022년 1월 20일
0

BFS/DFS

목록 보기
1/4

문제

18352번

아이디어

큐를 사용하여 방문처리(True,False)를 해나가면 된다.

소스코드

# 특정 거리의 도시 찾기
import sys
from collections import deque

N,M,K,X = map(int,sys.stdin.readline().split())

graph = [[] for _ in range(N+1)]

for _ in range(M):
    A,B = map(int,sys.stdin.readline().split())
    graph[A].append(B)

def shortdistance(graph,K,X):
    result = []
    queue = deque()
    visited = [False] * (N + 1)

    queue.append((X,0))
    while queue:
        node,distance = queue.popleft()
        if distance == K:
            result.append(node)
        elif distance < K:
            for g in graph[node]:
                if not visited[g]:
                    visited[g] = True
                    queue.append((g,distance + 1))
    if len(result) == 0:
        print("-1")
    else:
        result.sort()
        for i in range(len(result)):
            print(result[i])

shortdistance(graph,K,X)

뭐가 틀렸는지 모르겠다.......
=> 해결!!!!!! 시작노드 방문처리를 안해줌...

최종코드

# 특정 거리의 도시 찾기
import sys
from collections import deque

N,M,K,X = map(int,sys.stdin.readline().split())

graph = [[] for _ in range(N+1)]

for _ in range(M):
    A,B = map(int,sys.stdin.readline().split())
    graph[A].append(B)

def shortdistance(graph,K,X):
    result = []
    queue = deque()
    visited = [False] * (N + 1)

    queue.append((X,0))
    while queue:
        node,distance = queue.popleft()
        visited[node] = True
        if distance == K:
            result.append(node)
        elif distance < K:
            for g in graph[node]:
                if not visited[g]:
                    visited[g] = True
                    queue.append((g,distance + 1))
    if len(result) == 0:
        print("-1")
    else:
        result.sort()
        for i in range(len(result)):
            print(result[i])

shortdistance(graph,K,X)
profile
백엔드 개발자

0개의 댓글