Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준 dfs
- 월곡중학교 학원추천
- 상월곡동 학원
- 백준 K보다 큰 구간
- 백준 2309번 일곱 난쟁이
- 월곡동 학원추천
- c++ 조합
- 백준 1049번
- 월곡역 학원
- 성북구 학원
- 월곡중 학원
- 백준 14246번 K보다 큰 구간
- 백준 14246번
- 백준 토마토
- 운영체제
- C# 병합정렬
- 백준 1049번 기타줄
- 백준 패션왕 신해빈
- 백준 10709
- DFS
- c++ split
- OS
- 관리형 학원
- 상월곡역 학원
- 백준 9375번 패션왕 신해빈
- C++ 문자열
- 백준 한국이 그리울 땐 서버에 접속하지
- C++ 9996
- 고정 소수점
- 서울사대부고 학원
Archives
- Today
- Total
키베이루's diary
[C++] 백준 2606번 바이러스 본문
1) 문제설명
https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
2) 아이디어
그래프를 만들어 BFS로 탐색하고 노드들을 방문할 때마다 카운트를 세서 방문한 총노드를 구한다.
3) 코드
#include<iostream>
#include<queue>
using namespace std;
int graph[101][101]={0,};
int c[101];
queue<int> q;
int cnt = 0;
void bfs(int start, int n) {
queue<int> q;
q.push(start); // q에 시작점을 넣어줌
c[start] = true; // 처음 시작한 곳은 방문했다.
while (!q.empty()) { // 큐가 빌때까지 반복
int curr = q.front(); // 밑에서 큐에 넣은 것을 저장
q.pop(); //
cnt++;
for (int i = 1; i <= n; i++) {
if (c[i] == 0 && graph[curr][i] == 1) { // 내가 방문하지 않았고 그래프가 이어져 있다면
c[i] = 1; // 방문하고
q.push(i); // 큐에 넣는다.
}
}
}
}
int main() {
int m, n, a, b;
cin >> m >> n;
for (int i = 1; i <= n; i++) {
scanf("%d %d", &a, &b);
graph[a][b] = graph[b][a] = 1;
}
bfs(1,m);
printf("%d", cnt - 1);
}
'알고리즘 > BFS, DFS' 카테고리의 다른 글
[C++] 백준 2667번 단지번호붙이기 (0) | 2022.06.08 |
---|---|
[C++] 백준 24445번 알고리즘 수업 - 너비 우선 탐색 2 (0) | 2022.06.07 |
[C++] 백준 24444번 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2022.06.07 |
[C++] 백준 24480번 알고리즘 수업 - 깊이 우선 탐색 2 (0) | 2022.06.07 |
[C++] 백준 24479번 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2022.06.07 |
Comments