๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/์•Œ๊ณ ๋ฆฌ์ฆ˜

DFS ์ž‘์€ ์ˆซ์ž ๋จผ์ € ํƒ์ƒ‰

by ๋ฝ€์งœ๊ผฌ 2025. 3. 28.
728x90
๋ฐ˜์‘ํ˜•
# ์ •์  ๊ฐœ์ˆ˜ N, ๊ฐ„์„  ๊ฐœ์ˆ˜ M, ํƒ์ƒ‰ ์‹œ์ž‘ ๋ฒˆํ˜ธ V
N, M, V = map(int, input().split())

edgeList = []
graph = [[] for vertex in range(N+1)]

for i in range(M):
    e0, e1 = map(int, input().split())
    edgeList.append((e0, e1))

for edge in edgeList:
    graph[edge[0]].append(edge[1])
    graph[edge[1]].append(edge[0])

for i in range(len(graph)):
    graph[i].sort(reverse=True)

#DFS
def DFS(graph, V) :
    visited = []
    stack = [V]

    while stack :
        print("-------------------")
        current = stack.pop()

        if current in visited:  # ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋ฌด์‹œ
            continue

        print("ํ˜„์žฌ ๋ฐฉ๋ฌธ", current)

        for n in graph[current]:
            print("์ด์›ƒ",n)
            if not n in visited:
                print("๋ฐฉ๋ฌธํ•ด์•ผํ• ์ด์›ƒ",n)
                stack.append(n)
                print("์Šคํƒ", stack)
        visited.append(current) # ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ
        print("๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ", visited)
    return visited

print(DFS(graph, V))

#BFS
728x90
๋ฐ˜์‘ํ˜•