본문 바로가기
개발 관련 공부/알고리즘

백준 1260

by 슴새 2021. 8. 9.
반응형

import java.util.*;
public class Main {

	public static boolean visited [];
	public static int map[][];
	
	public static int n;
	public static void main(String[] args) {
	
		Scanner sc=new Scanner(System.in);
		
		n=sc.nextInt();	 //정점의 갯수 	
		int m=sc.nextInt(); //간선의 갯수
		int v=sc.nextInt(); //시작하는 정점
		
		map=new int[n+1][n+1];
		visited=new boolean[n+1];
		 
		Arrays.fill(visited, false); //visited 배열을 모두 false로 초기화
		for(int i=0; i<n+1;i++){
			Arrays.fill(map[i], 0);
		}
		for(int i=0;i<m;i++) {
			int a=sc.nextInt();	  
			int b=sc.nextInt();			
			map[a][b]=1;
            map[b][a]=1;
		}
		dfs(v);
		System.out.println();
		Arrays.fill(visited, false);//visited 배열 재활용을 위해..
		bfs(v);
		
			
	}
	public static void dfs(int k) {
		System.out.print(k+" ");
		visited[k]=true;
		for(int i=0;i<n+1;i++) {
			if(visited[i]==false&&map[k][i]==1) {
				dfs(i);
			}
		}
	}
	//bfs는 재귀말고 반복으로 
	public static void bfs(int k) {
		Queue<Integer> q = new LinkedList<Integer>();
		 
		visited[k]=true;
		q.offer(k); //집어넣고 
		   
		while(!q.isEmpty()){
			 
			int temp=q.poll();//꺼내서
			System.out.print(temp+" ");
			for(int i=0;i<n+1;i++) {
				 if(visited[i]==false&&map[temp][i]==1) {
					 q.offer(i);
					 visited[i] = true;  
				 }
				
			}
		}
		 
 
	}
	 
}

첫 그래프 문제 

반응형

'개발 관련 공부 > 알고리즘' 카테고리의 다른 글

백준 2667  (0) 2021.08.11
백준 2606  (0) 2021.08.10
백준 9184  (0) 2021.08.06
백준 18870  (0) 2021.08.05
백준 2108  (0) 2021.08.04

댓글