반응형
문제
https://www.acmicpc.net/problem/2606
접근방법
1) 접근 사고
1. DFS 탐색을 통해 1번 바이러스와 연결된 간선들을 탐색해주면 됩니다.
2. 바이러스의 숙주인 1번은 제외하고 출력해야 합니다.
2) 시간 복잡도
3) 실수
4) 배운점
5) PS
정답 코드
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
const int MAX = 105;
vector<int> board[MAX];
bool visited[MAX];
int moveY[] = {-1,0,1,0};
int moveX[] = {0,-1,0,1};
void DFS(int cur){
visited[cur] = true;
ans++;
for(auto next : board[cur]){
if(!visited[next]){
DFS(next);
}
}
}
void pro(){
DFS(1);
}
void input(){
cin >> n >> m;
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
board[a].push_back(b);
board[b].push_back(a);
}
}
int main(){
input();
pro();
cout << ans -1 <<"\n";
}
반응형
'백준문제풀이 > DFS' 카테고리의 다른 글
11725번-트리의 부모 찾기 (0) | 2022.04.15 |
---|---|
11724번-연결 요소의 개수 (0) | 2022.04.14 |
14888번-연산자 끼워넣기 (0) | 2021.09.04 |