[백준]바이러스
백준 온라인 저지
바이러스
링크 : 문제 바로가기
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함수를 이용해 빼내며 그래프를 탐색했다.
알고리즘 : 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색