cpp) 백준 2606: 바이러스
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 2606: 바이러스

by NEWSUN* 2023. 7. 5.

Problem

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍

www.acmicpc.net

 

 

Solution


  
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
#define MAX 101
int n; // 정점의 수
int m; // 간선의 수
bool map[MAX][MAX]; // 네트워크 연결
bool visited[MAX]={0,}; // 정점 방문 여부
int cnt = 0; // 웜 바이러스에 걸린 컴퓨터 수 = 정답값
void dfs(int x){ // 정점을 인자로 받음
visited[x]=1;
cnt++;
for(int i=1;i<=n;i++){
if(map[x][i]==1 && visited[i]==0){
// 현재 정점과 연결돼있고 방문한 적이 없는 경우
dfs(i);
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin >> n;
cin >> m;
for(int i=0;i<m;i++){
int a,b;
cin >> a >> b;
map[a][b]=1;
map[b][a]=1;
}
dfs(1);
cout << cnt-1 << '\n'; // 1번 컴퓨터는 제외
return 0;
}

 

'코딩 테스트 > 백준 (C++, Python)' 카테고리의 다른 글

cpp) 백준 10773: 제로  (0) 2023.07.08
cpp) 백준 10828: 스택  (0) 2023.07.08
cpp) 백준 1012: 유기농 배추  (0) 2023.07.04
cpp) 백준 11723: 집합  (0) 2023.07.01
cpp) 백준 1874: 스택 수열  (2) 2023.06.29