The Way
백준 2606번: 바이러스 본문
백준 온라인 저지(BOJ) 2606번 문제
https://www.acmicpc.net/problem/2606
1. 문제 요약
컴퓨터 간 연결 정보들이 주어질 때,
1번 컴퓨터를 통해 바이러스에 감염되는 컴퓨터의 수를 구하기
2. 알고리즘
간단한 형태의 탐색 문제이다.
마지막에 합을 더해줄 때 1번 컴퓨터는 제외하고 더해줘야 한다는 점에 주의.
여러 효율적인 방법이 있겠지만... 역시 속도가 생명..
3. 코드
#include <iostream> #include <vector> #include <queue> using namespace std; int main() { vector<int> connect[100]; int inf[100] = { 0 }; int N, M; scanf("%d %d", &N, &M); int t1, t2; for (int i = 0; i < M; ++i) { scanf("%d %d", &t1, &t2); connect[--t1].push_back(--t2); connect[t2].push_back(t1); } inf[0] = 1; queue<int> q; q.push(0); int u; while (q.empty() == false) { u = q.front(); q.pop(); for (int i = 0; i < connect[u].size(); ++i) { if (inf[connect[u][i]] == 0) { inf[connect[u][i]] = 1; q.push(connect[u][i]); } } } int count = 0; for (int i = 1; i < N; ++i) count += inf[i]; printf("%d\n", count); return 0; }
'PS > 백준 온라인 저지' 카테고리의 다른 글
백준 9664번: NASLJEDSTVO (0) | 2018.01.09 |
---|---|
백준 4881번: 자리수의 제곱 (0) | 2018.01.09 |
백준 2178번: 미로 탐색 (0) | 2017.12.07 |
백준 11722번: 가장 긴 감소하는 부분 수열 (0) | 2017.11.28 |
백준 11399번: ATM (0) | 2017.11.28 |
Comments