-
풀이
1번 컴퓨터에 연결된 노드의 갯수만 구하면 된다. 카운트할 때 1번 컴퓨터는 제외한다. 예를 들어 1번, 2번이 감염됐다면 카운트는 1이다. 큐를 이용해 bfs로 풀 수 있다. 1번 컴퓨터가 다른 컴퓨터와 연결되어 있지 않다면 0이 출력되면 된다.
코드
#include <queue> #include <cstdio> using namespace std; int main() { int N, pair; bool visited[101] = {}; scanf("%d%d", &N, &pair); ++N; int com[101][101] = {}; for (int i = 0; i < pair; ++i) { int a, b; scanf("%d%d", &a, &b); com[a][b] = 1; com[b][a] = 1; } queue<int> q; q.push(1); visited[1] = true; int answer = -1; while (!q.empty()) { auto n = q.front(); q.pop(); ++answer; for (int i = 1; i <= N; ++i) { if (com[n][i] && !visited[i]) { visited[i] = true; q.push(i); } } } printf("%d\n", answer); }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2 x n 타일링 (0) 2021.08.13 [백준] 피보나치 함수 (0) 2021.08.10 [백준][2667번] 단지번호 붙이기 (0) 2021.08.09 [백준] 미로 탐색 (0) 2021.08.09 [백준] 1로 만들기 (0) 2021.07.11