[BFS/DFS] C11 백준 2606 바이러스 풀이

New Jenice!·2025년 2월 26일
0

Daily Algorithm

목록 보기
71/71
post-thumbnail

문제

풀이 과정

  • 연결되어 있는 모든 컴퓨터가 바이러스에 걸린다
  • 1번부터 시작한다
  • 어렵진 않은 문제고 인접 행렬을 사용해서 연결시키고 dfs로 재귀
#include <stdio.h>

#define MAX 101

int computer[MAX][MAX];
int visit[MAX];
int n;

int dfs(int x) {
    int result = 0;
    
    for (int i=1; i<=n; i++) {
        if (computer[x][i] == 1 && visit[i] == 0) {
            visit[i] = 1;
            result += 1 + dfs(i);
        }
    }
    
    return result;
}

int main() {
    scanf("%d", &n);
    
    int m;
    scanf("%d", &m);
    for (int i=0; i<m; i++) {
        int a, b;
        scanf("%d %d", &a, &b);
        
        computer[a][b] = 1;
        computer[b][a] = 1;
    }
    
    visit[1] = 1;
    int result = dfs(1);
    printf("%d", result);
    
    return 0;
}

profile
Embedded Software Engineer

0개의 댓글