ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
2๋ถํฐ n -1 ๊น์ง์ ๋ ธ๋์ ๋ํ ๋ถ๋ชจ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ ๋ค๋ฅธ ๊ทธ๋ํ ๋ฌธ์ ์์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ํ๋ ๊ฒ์ ํ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค. BFS๋ฅผ ํตํด ํน์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋, ๋ฐฉ๋ฌธ๋์ง ์์๋ค๋ฉด ํด๋น ๋ ธ๋์ ๋ถ๋ชจ๋ ํ์ฌ ๋ ธ๋๊ฐ ๋ถ๋ชจ๊ฐ ๋๋ค. ๋ง์ฝ ์์ ์ ๋ ฅ 1๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, BFS๋ก ํตํด ํ์ํ๊ฒ ๋๋ฉด 1๋ฒ ๋ ธ๋์ ์์ ๋ ธ๋๋ค์ ๊ฐ๊ฐ 4, 6์ด๊ณ ์ต์ด ๋ฐฉ๋ฌธ ์ํ์ด๋ฏ๋ก ๋ถ๋ชจ ๋ ธ๋๊ฐ 1 ์์ ์ฒดํฌํ ์ ์๋ค. ์ด์ฒ๋ผ ๋ชจ๋ ๋ ธ๋์ ๋ํด ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ ํ์ฌ์ ๋ถ๋ชจ๋ฅผ ์ฒดํฌํด๋๋ฉด ํธ๋ฆฌ์ ๋ถ๋ชจ๋ฅผ ์ฐพ์ ์ ์๋ค.
์ฝ๋
from sys import stdin
from collections import deque
def bfs(start):
q = deque([start])
while q:
parent = q.popleft()
for child in graph[parent]:
if not visited[child]:
visited[child] = parent
q.append(child)
print('\n'.join(map(str, visited[2:])))
if __name__ == '__main__':
n = int(stdin.readline())
visited = [0] * (n + 1)
visited[1] = 1
graph = [[] for _ in range(n + 1)]
for _ in range(n - 1):
node, connect = map(int, stdin.readline().split())
graph[node].append(connect)
graph[connect].append(node)
bfs(1)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2250 ํธ๋ฆฌ์ ๋์ด์ ๋๋น (0) | 2020.07.29 |
---|---|
๋ฐฑ์ค: 1261 ์๊ณ ์คํ (0) | 2020.07.28 |
๋ฐฑ์ค: 1991 ํธ๋ฆฌ ์ํ (0) | 2020.07.27 |
๋ฐฑ์ค: 14226 ์ด๋ชจํฐ์ฝ (0) | 2020.07.25 |
๋ฐฑ์ค: 13913 ์จ๋ฐ๊ผญ์ง 4 (0) | 2020.07.24 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ