728x90
    
    
  2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
그래프 이론을 방금 배운 사람들도 바로 적용해볼 수 있는 문제입니다.
굳이 따지자면 그래프를 인접 리스트 형태로 만든 다음에 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 | 
