공부/baekjoon 문제

백준 - 바이러스 [2606]

Vividy 2019. 6. 13. 15:09
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

int main() {

	int cnum;
	int nnum;

	vector<pair<int,int>> t;
	queue<int> s;

	int x, y;
	int index = 1, index2 = 1;
	int result = 0;

	bool v[200], v2[200];
	for (int i = 0; i < 200; i++)
		v[i] = false;
	for (int i = 0; i < 200; i++)
		v2[i] = false;
	int cur = 1, cur2 = 1;

	cin >> cnum;
	cin >> nnum;


	for (int i = 0; i < nnum; i++) {
		cin >> x >> y;
		t.push_back(make_pair(x, y));
	}

	while(1){
		for (int i = 0; i < t.size(); i++) {
			cur = t[i].first;
			cur2 = t[i].second;
			if (!v2[i]) {
				if (cur == index) {
					s.push(t[i].second);
					v[t[i].second] = true;
					v2[i] = true;
				}
				else if (cur2 == index) {
					s.push(t[i].first);
					v[t[i].first] = true;
					v2[i] = true;
				}
			}
		}
		if (s.empty())
			break;
		index = s.front();
		s.pop();
	}
	for (int i = 0; i < cnum+1; i++)
		if (v[i] == true)
			result++;
	cout << result;
	return 0;
}