개발/알고리즘

백준 2606번 : 바이러스

라사 RASA 2020. 8. 21. 21:16

문제 접근


입력 받은 것들을 인접 행렬로 구현하고, 1번에 대해 DFS 한 뒤 탐색하는 것들의 수를 cnt 변수에 기록해 반환하여 풀었다. 간단한 문제!

 

 

문제 코드


#include <iostream>

using namespace std;

int v,e;
bool adj[101][101] = {false};
bool visited[101] = {false};

int dfs(int n)
{
	int cnt=0;
	visited[n] = true;
	
	for(int i=1; i<=v; ++i)
		if(!visited[i] && adj[n][i])
			cnt=cnt+1+dfs(i);
	
	return cnt;
}

int main(void)
{
	int in, out;
	cin>>v>>e;
	
	for(int i=0; i<e; ++i)
	{
		cin>>in>>out;
		adj[in][out]=adj[out][in]=true;
	}
	
	cout<<dfs(1)<<'\n';
}