본문 바로가기

알고리즘 · 코딩

[백준 2606번] 바이러스

문제 링크

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net


C++ 풀이

#include <iostream>
#include <vector>
using namespace std;

vector <vector<int> > relation;
vector <bool> virus_check;

void DFS(int comNum) {
	if (virus_check[comNum] == true)
		return;

	virus_check[comNum] = true;
	for (int i = 0; i < relation[comNum].size(); ++i) {
		DFS(relation[comNum][i]);
	}
	return;
}


int main() {
	int com, pairN;
	cin >> com >> pairN;
	relation.resize(com + 1);
	virus_check.resize(com + 1, false);
	for (int i = 0; i < pairN; ++i) {
		int aCom, bCom;
		cin >> aCom >> bCom;
		relation[aCom].push_back(bCom);
		relation[bCom].push_back(aCom);
	}
	DFS(1);

	int answer = 0;
	for (int i = 2; i <= com; ++i) {
		if (virus_check[i] == true)
			answer++;
	}
	cout << answer;
	return 0;
}

DFS 방식으로 풀이하였다.

 

 

반응형