⚡️algorithm
[DFS, BFS] 백준 2644. 촌수 (+ 간략하게 출력하기)
남남이루
2022. 5. 2. 09:12
기본적인 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 뒤에가 '그게 아닐때~ 출력을 이걸로 하겠다'를 쓰면 됨