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
- C++ 문자열
- 상월곡동 학원
- 서울사대부고 학원
- c++ split
- 성북구 학원
- C++ 9996
- 관리형 학원
- 운영체제
- DFS
- 백준 패션왕 신해빈
- 월곡중 학원
- c++ 조합
- 상월곡역 학원
- 백준 한국이 그리울 땐 서버에 접속하지
- 백준 K보다 큰 구간
- 백준 2309번 일곱 난쟁이
- 백준 1049번 기타줄
- 월곡중학교 학원추천
- 월곡역 학원
- 고정 소수점
- 백준 9375번 패션왕 신해빈
- 백준 토마토
- 백준 1049번
- 백준 dfs
- C# 병합정렬
- OS
- 백준 14246번
- 백준 14246번 K보다 큰 구간
- 월곡동 학원추천
- 백준 10709
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