728x90
https://acmicpc.net/problem/2606
node = int(input())
vertex = int(input())
graph = [list() for _ in range(node + 1)]
for _ in range(vertex):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
visited = [0] * (node + 1)
stack = [1] # 1번 컴퓨터 부터 시작
while stack: # stack 이 비어있는 경우에 끝남
visit_node = stack[-1]
visited[visit_node] = 1
for adjacent in graph[visit_node]:
if not visited[adjacent]:
stack.append(adjacent)
break
else:
stack.pop()
print(sum(visited)-1)
처음 혼자 풀어본 DFS 문제이다.
딱 처음 배운 그대로의 알고리즘을 사용해서 연결되어있는 점들을 구했다.
1번 컴퓨터부터 시작한다고 되어있어서 stack에 1을 넣고 시작하였고 방문하지 않은 인접 노드들을 스택에 넣고 순회해가면서 구하였다.
짜면서 조금 버벅였는데 몇번 하다보면 괜찮아 지겠지
이 문제는 근데 dfs나 bfs나 큰 차이가 없는것같다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 10026 적록색약 (0) | 2021.03.01 |
---|---|
[백준] 2667 단지 번호 붙이기 (0) | 2021.02.24 |
[백준] 1713 후보추천하기 (0) | 2021.02.23 |
[백준] 8979 올림픽 (0) | 2021.02.23 |
[백준] 2804 크로스워드 만들기 (0) | 2021.02.23 |