DFS는 그래프 탐색 알고리즘 중 하나로, 이름 그대로 "깊이 우선"으로 그래프를 탐색하는 방법입니다.
그래프? 그래프는 노드(정점)와 이들을 연결하는 간선으로 이루어진 자료구조입니다. DFS는 한 노드에서 시작해 다음 노드로 이동할 때, 갈 수 있는 가장 깊은 곳까지 이동한 후, 더 이상 이동할 곳이 없으면 다시 이전 노드로 돌아오면서 탐색을 계속하는 방식이다.
// 해결한 문제: 바이러스
#include <stdio.h>
int graph[101][101];
int dfsv[101];
int result = 0;
void dfs(int v, int n)
{
dfsv[v]=1;
for (size_t i = 1; i <= n; i++)
{
if(graph[v][i] == 1 && dfsv[i]==0)
{
result++;
dfs(i,n);
}
}
return;
}
int main(void)
{
int com, line;
scanf("%d\\n%d",&com,&line);
for (size_t i = 0; i < line; i++)
{
int x,y;
scanf("%d %d",&x,&y);
graph[x][y] = 1;
graph[y][x] = 1;
}
dfs(1,com);
printf("%d",result);
}
graph[101][101]
배열은 최대 100대의 컴퓨터까지 고려해 크기를 101로 설정하고
두 정점간의 연결 상태를 2차원 배열의 첫번째 두번째 인덱스에 기록dfsv[101]
배열은 각 컴퓨터의 방문 여부를 기록한다. 방문 안한 노드는 0, 방문한 노드는 1로 설정graph[v][i] == 1 && dfsv[i]==0
를 이용해 이미 방문한 컴퓨터는 다시 탐색하지 않고, 방문하지 않은 컴퓨터만 탐색객체지향 프로그래밍
데이터를 객체로 처리하고, 객체 간의 상호작용을 통해 프로그램을 설계하는 방법클래스는 class
키워드를 사용해 정의한다. 클래스에는 속성(데이터)과 메서드(함수)가 포함될 수 있다. 속성은 객체의 상태를 나타내며, 메서드는 객체의 행동을 정의한다.