주소 : https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int map[101][101];
int visit[101];
int n, cnt;
void computer(int node)
{
visit[node] = 1;
for (int i = 1; i <= n; i++)
{
if (!visit[i] && map[node][i] == 1)
{
cnt++;
computer(i);
}
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int simulation;
int u, v;
cin >> n;
cin >> simulation;
for (int i = 0; i < simulation; i++)
{
cin >> u >> v;
map[u][v] = map[v][u] = 1;
}
computer(1);
cout << cnt;
}
마무리 : 처음에 이 문제를 볼 때 그래프 문제인 것을 깨달았다. 백준 문제를 풀면서 처음으로 그래프 문제를 풀게 된 것이었다. 문제를 읽고 학교에서 dfs와 bfs의 개념을 배워서 이 개념 중 나는 dfs로 문제를 풀었다. 이 문제 같은 경우에는 지정한 노드가 어떤 노드와 연결되었는지 알고 싶은 것이기 때문에 dfs와 bfs로 풀어도 상관이 없다.
'백준 > C++' 카테고리의 다른 글
백준 9375번 : 패션왕 신해빈 [C++] (0) | 2022.09.02 |
---|---|
백준 9095번 : 1, 2, 3 더하기 [C++] (0) | 2022.09.01 |
백준 2579번 : 계단 오르기 [C++] (0) | 2022.09.01 |
백준 1463번 : 1로 만들기 [C++] (0) | 2022.08.28 |
백준 1003번 : 피보나치 함수 [C++] (0) | 2022.08.28 |