반응형
문제
해설
코드
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int map[101][101];
int visit[101];
int cnt;
int n, com; // 컴퓨터의 수, 네트워크 연결 쌍
void dfs(int node) {
visit[node] = 1;
for (int i = 1; i <= n; i++) {
if (map[node][i] == 1 && !visit[i]) {
cnt++;
dfs(i);
}
}
}
void bfs(int node) {
visit[node] = 1;
queue<int> q;
q.push(node);
while (!q.empty()) {
node = q.front();
q.pop();
for (int i = 1; i <= n; i++) {
if (map[node][i] == 1 && !visit[i]) {
q.push(i);
visit[i] = 1;
cnt++;
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int x, y;
cin >> n;
cin >> com;
for (int i = 0; i < com; i++) {
cin >> x >> y;
map[x][y] = map[y][x] = 1;
}
dfs(1);
cout << cnt << '\n';
cnt = 0;
memset(visit, 0, sizeof(visit));
bfs(1);
cout << cnt << '\n';
}
반응형
'Development > Algorithm' 카테고리의 다른 글
[BOJ] 2583. 영역 구하기 (0) | 2020.10.06 |
---|---|
[BOJ] 11729. 하노이 탑 이동 순서 (0) | 2020.10.04 |
[BOJ] 10809. 알파벳 찾기 (0) | 2020.10.03 |
[BOJ] 2966. 찍기 (0) | 2020.10.02 |
[BOJ] 10448. 유레카 이론 (0) | 2020.10.02 |