앞서 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 |