[ 2023-07-20 ๐ŸŽ‹ TIL ]

Burkeyยท2023๋…„ 7์›” 20์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
124/157

๋ฐฑ์ค€ 11725, 24480๋ฒˆ ํŒŒ์ด์ฌ

11725๋ฒˆ


๋ฌธ์ œ


์ฝ”๋“œ

import sys

input = sys.stdin.readline

n = int(input())
graph = dict()
visited = [0 for _ in range(n+1)]

for _ in range(n-1):
  n1, n2 = map(int, input().split())
  if (n1 in graph):
    graph[n1].append(n2)
  else:
    graph[n1] = [n2]

  if (n2 in graph):
    graph[n2].append(n1)
  else:
    graph[n2] = [n1]
    
stack = [1]
print('graph :: ', graph)
while stack:
  p = stack.pop() # ๋ถ€๋ชจ ๋…ธ๋“œ
  
  for i in graph[p]: # p์˜ ์ž์‹ ๋…ธ๋“œ ํƒ์ƒ‰
    if not visited[i]: 
    # ์•„์ง ํƒ์ƒ‰ ์•ˆํ•œ ๋…ธ๋“œ ์žˆ์œผ๋ฉด ํƒ์ƒ‰ํ•  ๋…ธ๋“œ๋กœ ์ถ”๊ฐ€
      visited[i] = p # ์ž์‹ ๋…ธ๋“œ์— ๋ถ€๋ชจ๋ฅผ ์ €์žฅ
      stack.append(i)


for i in range(2, n+1): # 1์€ ์ œ์™ธํ•œ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋งŒ ์ถœ๋ ฅ
  print(visited[i])

24480๋ฒˆ

๋ฌธ์ œ


์ฝ”๋“œ

import sys

input = sys.stdin.readline
sys.setrecursionlimit(10**6)
n, m, v = map(int, input().split())

graph = [[] for _ in range(n+1)]
visited = [0 for _ in range(1+n)]

for _ in range(m):
  n1,n2 = map(int, input().split())
  graph[n1].append(n2)
  graph[n2].append(n1)
  
for i in range(1, n+1):
  graph[i] = reversed(sorted(graph[i])) 
# ๋‚ด๋ฆผ์ฐจ์ˆœ ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

turn = 1
def dfs(s):
  global turn 
  visited[s] = turn # ๋ฐฉ๋ฌธ์ˆœ์„œ
  turn += 1 

  for i in graph[s]:
    if not visited[i]: # ๋ฐฉ๋ฌธํ–ˆ๋Š”์ง€ ํ™•์ธ
      dfs(i)
      
dfs(v)

for i in range(1, n+1):
  print(visited[i])

DFS ๊ฐœ๋… ๋ฌธ์ œํ’€๋ฉด์„œ ์ดํ•ด์ค‘..
์žฌ๊ท€๋กœ๋„ ํ’€์–ด๋ณด๊ณ .. ๋ฐ˜๋ณต๋ฌธ๋งŒ์œผ๋กœ ํ’€์–ด๋ณด๊ณ ..
๋‹ค์Œ์€ ์‘์šฉ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ์˜ˆ์ •

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 20์ผ

์ •๋ง ์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ