[백준]바이러스

백준 온라인 저지

바이러스

링크 : 문제 바로가기

import sys
n=int(sys.stdin.readline().rstrip())
link=int(sys.stdin.readline().rstrip())
linked=[[] for _ in range(n+1)]
visited=[False]*(n+1)
for _ in range(link):
    x,y=map(int,sys.stdin.readline().rstrip().split(" "))
    linked[x].append(y)
    linked[y].append(x)
# print(linked)
stack=[1]

while len(stack)!=0:
    checking=stack.pop()
    if visited[checking]==True:
        continue
    visited[checking]=True
    if linked[checking]!=0:
        stackinput=sorted(linked[checking])
        while len(stackinput)!=0:
            stack.append(stackinput.pop())
    else:
        pass

print(visited.count(True)-1)

DFS를 이용해 풀었다. 문제 입력으로 들어온 간선정보를 이용해 인접리스트를 만들고 리스트를 스택이라고 생각하며 활용해 인접리스트에 해당하는 정보를 넣어놓고 가장 나중에 넣은 정보부터 pop함수를 이용해 빼내며 그래프를 탐색했다.

알고리즘 : 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색

results matching ""

    No results matching ""