문제 링크
https://www.acmicpc.net/problem/2606
C++ 풀이
#include <iostream>
#include <vector>
using namespace std;
vector <vector<int> > relation;
vector <bool> virus_check;
void DFS(int comNum) {
if (virus_check[comNum] == true)
return;
virus_check[comNum] = true;
for (int i = 0; i < relation[comNum].size(); ++i) {
DFS(relation[comNum][i]);
}
return;
}
int main() {
int com, pairN;
cin >> com >> pairN;
relation.resize(com + 1);
virus_check.resize(com + 1, false);
for (int i = 0; i < pairN; ++i) {
int aCom, bCom;
cin >> aCom >> bCom;
relation[aCom].push_back(bCom);
relation[bCom].push_back(aCom);
}
DFS(1);
int answer = 0;
for (int i = 2; i <= com; ++i) {
if (virus_check[i] == true)
answer++;
}
cout << answer;
return 0;
}
DFS 방식으로 풀이하였다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[SWEA 1206] View (0) | 2021.10.18 |
---|---|
[SWEA 1240] 단순 2진 암호코드 (0) | 2021.10.18 |
[SWEA 1983] 조교의 성적 매기기 (0) | 2021.10.11 |
[프로그래머스] 최소 직사각형 (0) | 2021.10.08 |
[프로그래머스] 직업군 추천하기 (0) | 2021.10.04 |