APS
BOJ2606 바이러스
ChoiSH313
2022. 6. 3. 19:45
<Solution>
1. BOJ1260 DFS와 BFS의 DFS 풀이법과 똑같은 문제이다
2. map에 간선을 연결하고 노드의 방문의 체크하며 카운트!
3. map이 연결되어 있지 않거나( != 1) Node에 이미 방문 했을 경우(== 1)에는 넘어가고 아닌 경우에는 연결된 Node 니깐 카운트 해준다!
<Source Code>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ2606_바이러스 {
static int[][] map;
static int cnt;
static int[] visit;
static int map_size;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "");
map_size = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine(), "");
int line_size = Integer.parseInt(st.nextToken());
map = new int[map_size][map_size];
visit = new int[map_size];
for(int i = 0; i < line_size; i++)
{
st = new StringTokenizer(br.readLine(), " ");
int n1 = Integer.parseInt(st.nextToken());
int n2 = Integer.parseInt(st.nextToken());
map[n1-1][n2-1] = 1;
map[n2-1][n1-1] = 1;
}
dfs(0);
System.out.print(cnt);
}
public static void dfs(int V) {
visit[V] = 1;
for(int i = 0; i < map_size; i++) {
if(map[V][i] != 1 || visit[i] == 1)
continue;
cnt++;
dfs(i);
}
}
}
저녁에 꾸역꾸역 나와서 하는중... 화이팅!!