일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- mobilenet
- 식별자
- feature map
- 인접리스트
- Depthwise Separable Convolution
- Inductive Bias
- dfs
- resnet
- BFS
- SQL
- Two Pointer
- bottleneck
- CROSS JOIN
- numpy
- 백준
- 인접행렬
- depthwise convolution
- 정규화
- dp
- get_dummies()
- 연산량 감소
- pytorch
- 엔터티
- 1x1 Convolution
- SQLD
- skip connection
- 데이터모델링
- 그래프
- SQLD 후기
- outer join
- Today
- Total
SJ_Koding
그래프 연습 (3) - 바이러스 (백준 2606) 본문
저번 DFS, BFS문제보다 더욱 쉬운 실버3.
DFS로 문제를 풀어보았고 이전 게시글의 방법과 매우 유사하다.
2023.11.08 - [Algorithm/Graph] - 그래프 연습 (2) - DFS와 BFS (백준 1260)
그래프 연습 (2) - DFS와 BFS (백준 1260)
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는
sjkoding.tistory.com
문제
신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.
예를 들어 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 |