티스토리 뷰

백준

백준 소스코드 [C++] 2606 바이러스

Hani_Levenshtein 2020. 8. 23. 09:49

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

 

2606번: 바이러스

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

www.acmicpc.net

백준 소스코드 [C++] 2606 바이러스

 

#include <iostream>
#include <algorithm>
#include <queue>
#include <string.h>
using namespace std;
int  sum,c,cc;
pair<int,int> arr[5000];
bool check[5000],node[101];
queue <int> q;
void bfs() {
	while (q.empty() != true) {
		int pp = q.front();
		q.pop();
		for (int i = 1;i <= cc;i++) {
			if (check[i]== true &&pp == arr[i].first) {
				check[i] = false;
				q.push(arr[i].second);
				if (node[arr[i].second] == true) {
					sum++;
					node[arr[i].second] = false;
				}
			}
			else if (check[i] == true && pp == arr[i].second) {
				check[i] = false;
				q.push(arr[i].first);
				if (node[arr[i].first] == true) {
					sum++;
					node[arr[i].first] = false;
				}
			}
		}
	}
	return;
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int x,y;
	sum = 0;
	cin >> c;
	cin >> cc;
	memset(check, true, sizeof(bool) * 5000);
	memset(node, true, sizeof(bool) * 101);
	for (int i = 1;i <= cc;i++) {
		cin >> x >> y;
		arr[i] = make_pair( x,y );
	}
	q.push(1);
	bfs();
	cout << sum << '\n';
	return 0;
}
댓글