[BOJ] 2606. 바이러스

동스토리 ㅣ 2020. 10. 4. 00:17

반응형

문제

www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net


해설


코드

#include<iostream>
#include<queue>
#include<algorithm>

using namespace std;

int map[101][101];
int visit[101];
int cnt;
int n, com; // 컴퓨터의 수, 네트워크 연결 쌍


void dfs(int node) {

	visit[node] = 1;

	for (int i = 1; i <= n; i++) {
		if (map[node][i] == 1 && !visit[i]) {
			cnt++;
			dfs(i);
		}
	}
}

void bfs(int node) {

	visit[node] = 1;
	queue<int> q;
	q.push(node);

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

		for (int i = 1; i <= n; i++) {
			if (map[node][i] == 1 && !visit[i]) {
				q.push(i);
				visit[i] = 1;
				cnt++;
			}
		}
	}
}

int main() {

	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int x, y;
	cin >> n;
	cin >> com;
	for (int i = 0; i < com; i++) {
		cin >> x >> y;
		map[x][y] = map[y][x] = 1;
	}

	dfs(1);
	cout << cnt << '\n';
	cnt = 0;
	memset(visit, 0, sizeof(visit));
	bfs(1);
	cout << cnt << '\n';

}

 

 

 

반응형

'Development > Algorithm' 카테고리의 다른 글

[BOJ] 2583. 영역 구하기  (0) 2020.10.06
[BOJ] 11729. 하노이 탑 이동 순서  (0) 2020.10.04
[BOJ] 10809. 알파벳 찾기  (0) 2020.10.03
[BOJ] 2966. 찍기  (0) 2020.10.02
[BOJ] 10448. 유레카 이론  (0) 2020.10.02