(백준 알고리즘 문제풀이) 2606번 바이러스
by 줌코딩
문제
어떻게 접근할 것인가?
- vector로 링크드 리스트를 구현하고 bfs를 돌렸다.
코드
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
int n, m, n1, n2, answer;
int* visited;
vector<vector<int> > v;
queue<int> q;
int main(){
scanf("%d %d", &n, &m);
visited = new int[n+1];
for(int i = 0; i <= n; i++){
v.push_back(vector<int>());
visited[i] = 0;
}
while(m--){
scanf("%d %d", &n1, &n2);
v[n1].push_back(n2);
v[n2].push_back(n1);
}
q.push(1);
visited[1] = 1;
while(!q.empty()){
int temp = q.front();
q.pop();
answer ++;
for(int i = 0; i < v[temp].size(); i++){
if(!visited[v[temp][i]]) {
q.push(v[temp][i]);
visited[v[temp][i]] = 1;
}
}
}
printf("%d", answer-1);
}
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS