알고리즘

C++ 알고리즘 - 백준 2606 바이러스

마루설아 2025. 1. 5. 19:10

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

 

#include <bits/stdc++.h>
#define endl "\n"

using namespace std;

pair<int, bool> computer[101];
pair<int, int> connect[10500];

void virus(int size,  int n) {
	if (computer[n].second == true) {
		for (int i = 0; i < size * 2; i++) {
			if (connect[i].first != n || computer[connect[i].second].second == true) continue;
			computer[connect[i].second].second = true;
			virus(size, connect[i].second);
		}
	}
}

int main(void) {
	/************** C++ Init **************/
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	/************** C++ Init **************/


	int input1, input2;
	int com1, com2;
	int cnt = 0;
	cin >> input1 >> input2;

	for (int i = 1; i <= input1; i++) {
		computer[i] = { i, false };
	}

	for (int i = 0; i < input2 * 2; i++) {
		cin >> com1 >> com2;
		connect[i] = { com1, com2 };
		i++;
		connect[i] = { com2, com1 };
	}

	computer[1].second = true;

	virus(input2, 1);

	for (int i = 2; i <= input1; i++) {
		if (computer[i].second == true) {
			cnt++;
		}
	}

	cout << cnt;
}