백준 바이러스(2606)
dfs,bfs를 활용하여 1을 제외한 노드를 탐색할 때마다 개수를 1개씩 누적하여 이를 출력하는 프로그램을 작성하는것이 문제의 요지이다. 미로찾기처럼 중간에 답이 있는것이 아닌, 모든 노드를 탐색해야하는 문제이다. 그렇기에 큐를 쓰는 bfs알고리즘보다는 dfs를 활용하여 간단하게 코드를 작성하였다.
#include <iostream>
#include <vector>
using namespace std;
vector<int> nodes[101];
int visited[101] = { 0, };
int cnt = 0;
void dfs(int i)
{
for (int j = 0; j < nodes[i].size(); j++)
{
if (visited[nodes[i][j]] == 0)
{
cnt++;
visited[nodes[i][j]] = 1;
dfs(nodes[i][j]);
}
}
return;
}
int main()
{
int node_cnt;
int link_cnt;
int node_i;
int link;
scanf("%d", &node_cnt);
scanf("%d", &link_cnt);
for (int i = 1; i <= link_cnt; i++)
{
scanf("%d %d", &node_i, &link);
nodes[node_i].push_back(link);
nodes[link].push_back(node_i);
}
visited[1] = 1;
dfs(1);
printf("%d", cnt);
}
Author And Source
이 문제에 관하여(백준 바이러스(2606)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@main_door/백준-바이러스2606저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)