반응형
문제
https://www.acmicpc.net/problem/2606
해당 노드에 연결된 모든 노드들을 찾는문제라고 볼수있다.
DFS를 통해 구현해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import sys N=int(sys.stdin.readline())#컴퓨터수 M=int(sys.stdin.readline())#연결수 matrix=[[0 for _ in range(N+1)] for _ in range(N+1)] for i in range(M): x,y=map(int,sys.stdin.readline().split()) matrix[x][y]=1 matrix[y][x]=1 #current_node:시작 컴퓨터,matrix:인접행렬,virus_com:바이러스 걸린컴퓨터터 def dfs(current_com,matrix,virus_com): virus_com+=[current_com]#바이러스 걸린 컴퓨터 저장 for search_node in range(len(matrix[current_com])): # 연결된 컴퓨터 탐색 if matrix[current_com][search_node] and search_node not in virus_com: # 연결되어 있고 바이러스에 걸리지 않았다면 virus_com = dfs(search_node, matrix, virus_com) # 해당컴퓨터에서 다시 재귀로 실행 return virus_com print(len(dfs(1,matrix,[]))-1)#1번을 제외한 바이러스가 걸린 컴퓨터수 | cs |
반응형
'알고리즘(python) > 탐색' 카테고리의 다른 글
[Python]DFS와BFS 백준 1012 (0) | 2020.02.13 |
---|---|
[Python]DFS와BFS 백준 2667 (0) | 2020.02.13 |
[Python]DFS와BFS 백준 1260 (0) | 2020.02.13 |
[Python]이분탐색 백준 12015 (0) | 2020.02.01 |
[Python]이분탐색 백준 1300 (2) | 2020.02.01 |
최근댓글