알고리즘/백준

[DFSBFS] 백준_2606_바이러스_DFSBFS_실버4

vell_zero 2021. 10. 16. 10:20

2021년 10월 16일 토요일 10시

 

[DFSBFS] 백준_2606_바이러스_DFSBFS_실버4

 

-> 다시풀어보기 

 

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net

 

import java.util.Scanner;

public class Main{
	
	static int N; // 컴퓨터의 수  (정점)
	static int M; // 네트워크 상에 직접연결되어있는 컴퓨터 쌍의 수 (간선)
	static int V; // 탐색시작할 정점의 번
	static int[][] map; //각 정점간 탐색 경로를 저장할 배열 
 	static boolean[] checked; //정점의탐색여부 체크 
 	static int count =0;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		N = sc.nextInt();
		M = sc.nextInt();
		V = 1;
		map = new int[N+1][N+1]; //배열은 N+1
		checked = new boolean[N+1]; //정점의 탐색 여부 체크  
		 
		for(int i=0; i<M;i++) {
			
			int a = sc.nextInt();
			int b = sc.nextInt();
			
			map[a][b] = map[b][a] =1;
		}
		
		//for(int i=1; i<N+1;i++) {
		//	for (int j=1; j<N+1;j++) {
		//		System.out.print(map[i][j]);
		//	}
		//	System.out.println();
		//}
		System.out.println(dfs(1));
		sc.close();
	}
	public static int dfs(int i) {
		checked[i] = true;
		
		for(int j=1;j<=N;j++) {
			if(map[i][j] ==1 && checked[j] ==false) {
				count ++;
				dfs(j);
			}
		}
		
		
		return count;
	}
}




/*
7
6
1 2
2 3
1 5
5 2
5 6
4 7
*/

 

<참고>

https://fbtmdwhd33.tistory.com/28

 

[백준,BOJ 2606] 바이러스(JAVA 구현,추가풀이)

-내 생각 단계별로 풀어보기 DFS, BFS로 분류되어 있는 백준 2606 바이러스 문제이다. 이전 단계에 백트래킹 알고리즘 단계가 있었는데 일반적으로 백트래킹의 경우 DFS를 기반으로 푼다는 글을 보

fbtmdwhd33.tistory.com

https://zzang9ha.tistory.com/40

 

[백준] 2606번: 바이러스(DFS, BFS)

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서

zzang9ha.tistory.com