[파이썬] 백준 17352 : 여러분의 다리가 되어 드리겠습니다! (골드5)
17352번: 여러분의 다리가 되어 드리겠습니다!
선린월드에는 N개의 섬이 있다. 섬에는 1, 2, ..., N의 번호가 하나씩 붙어 있다. 그 섬들을 N - 1개의 다리가 잇고 있으며, 어떤 두 섬 사이든 다리로 왕복할 수 있다. 어제까지는 그랬다. "왜 다리
www.acmicpc.net
문제
풀이
방향성 생각
- 덩어리가 두개라서 아무 점에서 BFS를 돌린다.
- 1번에서 BFS를 돌린다 치고, 2~n까지 원소들을 방문할 때 마다 visit에서 제거해준다.
- 1번과 visit 내 임의의 원소를 출력
전체코드
from collections import deque
import sys
input = lambda : sys.stdin.readline().rstrip()
n = int(input())
graph = [[] for _ in range(n+1)]
for _ in range(n-2):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
visit = set(range(2,n+1))
q = deque([1])
while q:
x = q.popleft()
for nx in graph[x]:
if nx in visit:
visit.remove(nx)
q.append(nx)
print(1,visit.pop())
코멘트
분리집합이라 재귀로 부모 지정해주고 그런거 생각하고 왔는데, 그냥 BFS.......
'Algorithm > Graph' 카테고리의 다른 글
[파이썬] 백준 17471 : 게리맨더링 (골드4) (0) | 2023.12.06 |
---|---|
[파이썬] 프로그래머스 : 지형이동 (Lv.4) (0) | 2023.12.06 |
[파이썬] 백준 1486 : 등산 (골드2) (0) | 2023.12.04 |
[파이썬] 백준 2314 : 이세계 게임 (골드3) (0) | 2023.12.03 |
[파이썬] 프로그래머스 : 미로 탈출 (Lv.4) (0) | 2023.12.03 |
[파이썬] 백준 2982 : 국왕의 방문 (골드2) (0) | 2023.11.22 |
[파이썬] 백준 2251: 물통 (골드5) (0) | 2023.11.21 |
댓글