오늘의 알고리즘
[C++] 백준 2606번 바이러스
하늘하늘 .
2022. 5. 9. 20:24
#include <iostream>
#include <stack>
#include <tuple>
bool graph[101][101] = {};
bool virius[101] = {};
int main()
{
int N = 0;
int M = 0;
int iCount = 0;
std::cin >> N >> M;
for (int i = 0; i < M; ++i)
{
int iX = 0;
int iY = 0;
std::cin >> iX >> iY;
graph[iX][iY] = true;
graph[iY][iX] = true;
}
std::stack<int> sta = {};
sta.push(1);
while (!sta.empty())
{
int iNumber = sta.top();
sta.pop();
if (!virius[iNumber])
{
virius[iNumber] = true;
++iCount;
}
else
continue;
for (int i = 1; i <= N; ++i)
{
if (i == iNumber)
continue;
if (graph[iNumber][i] && !virius[i])
sta.push(i);
}
}
std::cout << iCount - 1;
return 0;
}
BFS / DFS 둘다 상관 없을 듯!
i <= N 여기서 = 빼먹고 좀 헤맸다