일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dp
- CROSS JOIN
- dfs
- 인접리스트
- SQLD 후기
- numpy
- Two Pointer
- 백준
- resnet
- 1x1 Convolution
- depthwise convolution
- skip connection
- Inductive Bias
- pytorch
- 엔터티
- bottleneck
- 인접행렬
- 그래프
- 연산량 감소
- get_dummies()
- 정규화
- BFS
- outer join
- SQL
- Depthwise Separable Convolution
- mobilenet
- 데이터모델링
- SQLD
- 식별자
- feature map
- Today
- Total
SJ_Koding
그래프 연습 (3) - 바이러스 (백준 2606) 본문
저번 DFS, BFS문제보다 더욱 쉬운 실버3.
DFS로 문제를 풀어보았고 이전 게시글의 방법과 매우 유사하다.
2023.11.08 - [Algorithm/Graph] - 그래프 연습 (2) - DFS와 BFS (백준 1260)
문제
신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.
예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.
어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다.
출력
1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다.
해답
N = int(input())
T = int(input())
graph = [[0 for _ in range(N+1)] for _ in range(N+1)] # 인접행렬 초기화
visited = [False for _ in range(N+1)] # 방문처리 리스트
for _ in range(T):
v1, v2 = map(int, input().split())
graph[v1][v2] = 1
graph[v2][v1] = 1 # 양방향
result = []
def dfs(V, visited, result): # 이전 포스팅 참고
visited[V] = True
result.append(V) # 1과 이어진 모든 곳 append
for i in range(1, len(graph[V])):
if graph[V][i] == 1 and visited[i] == False:
dfs(i, visited, result)
dfs(1, visited, result)
print(len(result)-1)
'Algorithm > Graph' 카테고리의 다른 글
백준 7576, 7569: 토마토 (골드 V) - N차원 BFS (1) | 2024.02.02 |
---|---|
그래프 연습 (5) - 컴퓨터 세그먼트(문제 자체 변형) (0) | 2023.11.08 |
그래프 연습 (4) - 케빈 베이컨의 6단계 법칙 (백준 1389) (2) | 2023.11.08 |
그래프 연습 (2) - DFS와 BFS (백준 1260) (3) | 2023.11.08 |
그래프 연습 (1) - 인접 행렬과 인접 리스트 (0) | 2023.11.08 |