본문 바로가기
알고리즘!/Graph

[C] 2606: 바이러스

by soeayun 2023. 7. 29.

앞서 DFS와 BFS 관련 문제를 풀어서 그런지

구현하는데 크게 어려움을 받지는 않았다.

사실상 앞선 문제와 똑같이 구현 했다고 봐도 무방하다.

 

주의해서 할 점은 어떤 것을 전역변수로 사용할지와 포인터를 함수의 매개변수로 넣을때

어떻게 할지 좀 더 노력해야 한다는 점이다.

 

BFS나 DFS 둘 중 아무거나로 구현해도 상관없는데

이번에는 그냥 좀 더 쉬운 DFS를 이용해서 풀었다.

 

#include <stdio.h>

int visit[101];
int arr[101][101];

void dfs(int arr[][101],int* cnt, int n, int V)
{
  int result;
  for(int i=1;i<=n;i++)
    {      
      if(arr[V][i]==1 && visit[i]==0)
      {
        visit[i]=1; //지나감
        (*cnt)++;
        dfs(arr,cnt,n,i);
      }
    }  
}

  int main(void)
  {
   int n,v;
    scanf("%d %d",&n,&v);
    int a,b;
    for(int i=1;i<=v;i++)
      {        
        scanf("%d %d",&a,&b);
        arr[a][b]=1;
        arr[b][a]=1;
      }
    visit[1]=1;
    int cnt=0;
    dfs(arr,&cnt,n,1); //dfs로 탐색!  
    
    printf("%d",cnt);
       
  }

'알고리즘! > Graph' 카테고리의 다른 글

[C] 10026: 적록색약  (0) 2023.07.30
[C] 7576: 토마토  (0) 2023.07.30
[C] 1012: 유기농 배추  (0) 2023.07.30
[C] 2667: 단지번호붙이기  (0) 2023.07.29
[C] 1260: DFS와 BFS  (0) 2023.07.29