728x90
그래프 이론을 방금 배운 사람들도 바로 적용해볼 수 있는 문제입니다.
굳이 따지자면 그래프를 인접 리스트 형태로 만든 다음에 DFS로 탐색했습니다.
인접 리스트를 구현한 방법만 설명드릴게요.
graph[1-1]에는 2랑 5가 들어갑니다.
즉 graph[n-1]에는 n과 연결된 노드를 넣어줍니다.
이미 방문한 노드는 가지 않도록 visited 배열도 관리해줍니다.
최종적으로 방문한 노드들은 visited에 체크가 되어 있으므로 visited 배열 값을 카운팅해서 답으로 출력했습니다.
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import sys
input = sys.stdin.readline
def dfs(i):
visited[i] = True
stack = graph[i]
for k in range(len(stack)):
if not visited[stack[k]-1]:
dfs(stack[k]-1)
n = int(input())
a = int(input())#쌍
graph = [[] for i in range(n)]
visited = [False]*n
for i in range(a):
x,y = map(int,input().split())
if y not in graph[x-1]:
graph[x-1].append(y)
if x not in graph[y-1]:
graph[y-1].append(x)
dfs(0)
cnt=0
for i in range(n):
if visited[i]:
cnt+=1
print(cnt-1)
|
cs |
728x90
'알고리즘 > ps' 카테고리의 다른 글
[python] 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2021.05.04 |
---|---|
[python] 백준 3190 뱀 (0) | 2021.03.31 |
[파이썬] 백준 20115 에너지 드링크 (1) | 2021.03.06 |
[python] 백준 10799 쇠막대기 (0) | 2021.02.04 |
[python] 백준 1339 단어수학 (0) | 2021.01.10 |