이숭간 공부기록
[백준] 9372번 파이썬 _ 상근이의 여행 본문
728x90
https://www.acmicpc.net/problem/9372
문제유형 : BFS
문제풀이 :
- BFS로 인접한 국가들을 방문하며 푸는 문제
- 문제에서 '다른국가를 거쳐가도(심지어 이미 방문한국가라도)된다. 라는 말이 나오는데 bfs로풀때 만약 2의 인접한 국가가 3,4라고 했을때 2->3, 2->4 으로 뻗어나가기때문에 2번이 2번 방문되어도 된다 이런의미로 해석하면 된다.
- 큐에 국가를 넣을때마다 비행기를 한번 탔다는것을 의미하므로 count하고 만약 모든 국가가 방문되었다면 bfs를 종료한다.
정답코드 :
import sys
input = sys.stdin.readline
t = int(input())
from collections import deque
def bfs(start, plane):
q = deque()
q.append(start)
visited[start] = True
while q:
# 국가를 모두 방문하면
if visited.count(True) == n:
return plane
curr = q.popleft()
for node in graph[curr]:
if not visited[node]:
q.append(node)
plane += 1
visited[node] = True
for _ in range(t):
n,m = map(int, input().split())
# n개의 국가를 모두 방문했는가
visited = [False] * (n+1)
graph = [[] for _ in range(n+1)]
for i in range(m):
a,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
p = bfs(1,0)
print(p)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 14627번 파이썬 _ 파닭파닭 (0) | 2021.08.15 |
---|---|
[백준] 2458번 파이썬 _ 키 순서 (0) | 2021.08.15 |
[백준] 14499번 파이썬 _ 주사위굴리기 (삼성SW) (0) | 2021.08.12 |
[백준] 14500번 파이썬 _ 테트로미노 (0) | 2021.08.12 |
[백준] 11657번 파이썬 _ 타임머신 (0) | 2021.08.11 |