본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[c++] 백준 2606 바이러스

백준 단계별로 풀어보기[DFS와 BFS] 바이러스

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

 

2606번: 바이러스

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

www.acmicpc.net

 

[풀이]

DFS를 이용. 

 

[코드]

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

using namespace std;

int n, m, cnt = 0; //정점의 개수, 간선의 개수, 시작 정점
int adj[101][101];
bool isVisited[101] = { false, };
queue<int> q;

void dfs(int v) {

	isVisited[v] = true;
	cnt++;

	for (int i = 1; i <= n; i++)
		if (adj[v][i] == 1 && !isVisited[i])
			dfs(i);
		
}

int main() {
	//dfs
	
	cin >> n >> m; //컴퓨터의 개수, 연결된 컴퓨터 쌍 수 

	int a, b;
	for (int i = 1; i <= m; i++) {
		cin >> a >> b;
		adj[a][b] = 1;
		adj[b][a] = 1;
	}

	dfs(1);
	cout << cnt-1;

	return 0;
}