알고리즘

백준 - 2606 바이러스

준영아빠78 2020. 9. 13. 21:01

 

 

 

2606번: 바이러스

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

www.acmicpc.net

본 문제는 BFS 를 통해 첫번째 노드와 인접한 모든 노드들을 세면 되는 간단한 문제 이다.

코드는 아래와 같다.

 

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main()
{
	int nrNode, nrEdge;

	cin >> nrNode >> nrEdge;
	vector<vector<int>> nw(nrNode + 1, vector<int>(nrNode + 1, 0));

	int t1, t2;
	for (int i = 0; i < nrEdge; i++)
	{
		cin >> t1 >> t2;
		nw[t1][t2] = 1;
		nw[t2][t1] = 1;
	}

	vector<int> visit(nrNode + 1, 0);

	int start = 1;
	visit[start] = 1;

	queue<int> q;
	q.push(start);

	int result = 0;

	while (!q.empty())
	{
		int qd = q.front();
		q.pop();

		for (int i = 1; i <= nrNode; i++)
		{
			if (nw[qd][i] && visit[i] == 0)
			{
				visit[i] = 1;
				q.push(i);
				result++;
			}
		}
	}
	cout << result << endl;
}