기본적인 DFS, BFS 문제인데, 아직 BFS가 익숙하지 않아서 BFS로 해봤다.
역시나 기본 프레임은 1260번이랑 비슷하다.
- import deque 쓰는 거랑
- BFS함수 첫 줄에 deque 만들고 ,
- while q : 로 하나씩 꺼내는 거
- graph 만들 때 쌍방향으로 넣어주기
from collections import deque
import sys
sys.stdin = open('C:\\tech\\backjoon\\graph\\input.txt','r')
input = sys.stdin.readline
def BFS(node):
q = deque()
q.append(node)
while q:
node = q.popleft()
for i in graph[node]:
if visit2[i] == 0 :
visit2[i] = visit2[node] + 1
q.append(i)
n = int(input())
a,b = map(int, input().split())
m = int(input())
graph = [[] for _ in range(n+1)]
# visit1 = [0]*(n+1)
visit2 = [0]*(n+1)
for i in range(m):
p, c = map(int, input().split())
graph[p].append(c)
graph[c].append(p)
BFS(a)
print(visit2[b] if visit2[b] > 0 else -1)
* 간략하게 출력하기
백준 문제 보다보면, 어떤 조건에 맞지 않으면 -1 출력하라는 출력 조건이 있을 때가 있다.
print(visit2[b] if visit2[b] > 0 else -1)
그때 이렇게 쓰면 한 줄 안에 표현할 수 있다. 앞에가 기본 출력이고, 뒤에가 조건을 쓰는 부분이다. else 뒤에가 '그게 아닐때~ 출력을 이걸로 하겠다'를 쓰면 됨
'⚡️algorithm' 카테고리의 다른 글
[BFS 너비 우선 탐색] (0) | 2022.05.02 |
---|---|
[BFS, 파이썬] 백준 2178. 미로탐색 (최단거리) (0) | 2022.05.02 |
[DFS, BFS] 백준 1260. DFS와 BFS (0) | 2022.05.02 |
[그래프] 백준 11725. 트리 부모 (0) | 2022.04.29 |
[그래프] 백준 1991. 트리 순회 (전위 순회, 중위 순회, 후위 순회) (0) | 2022.04.29 |