그래프 유형으로 들어왔다. 그래프에서 중요한 것은 각 문제별로 어떤 특징을 가진 그래프인지 알고 해당 그래프의 특성에 맞게 잘 자료구조로 나타낸다음? 문제에서 원하는 답을 도출할 수 있도록 순회를 해서 답을 내는 것
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n;
static int[] visited;
static int[][] graph;
static int ans = 0;
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(bufferedReader.readLine());
visited = new int[n + 1];
graph = new int[n + 1][n + 1];
int m = Integer.parseInt(bufferedReader.readLine());
for (int i = 0; i < m; i++) {
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int a = Integer.parseInt(stringTokenizer.nextToken());
int b = Integer.parseInt(stringTokenizer.nextToken());
graph[a][b] = 1;
graph[b][a] = 1;
}
dfs(1);
System.out.println(ans-1);
}
static void dfs(int node) {
if (visited[node] == 1) {
return;
}
visited[node] = 1;
ans++;
for (int i = 1; i < n + 1; i++) {
if (visited[i] == 0 && graph[node][i] == 1) {
dfs(i);
}
}
}
}
갈수록 어려운 문제로 가보장
그래프 - 백준 1260 - DFS와 BFS - JAVA - DFS,BFS 구현 방법 (0) | 2022.10.29 |
---|
댓글 영역