-
[Algorithm] 백준 알고리즘 11403 (경로 찾기)Algorithm 2020. 3. 28. 14:55
java 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class FindRute { static int N; static int map[][]; static boolean visited[][]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N=Integer.parseInt(st.nextToken()); map = new int[N][N]; for(int i=0; i<N;i++) { st = new StringTokenizer(br.readLine()); for(int j=0; j<N;j++) { map[i][j]=Integer.parseInt(st.nextToken()); } } for(int i=0; i<N;i++) { for(int j=0; j<N;j++) { if(map[i][j]==1) { System.out.print(1+" "); }else { System.out.print(solve(i, j)+" "); } } System.out.println(); } } static int solve(int i, int j) { Queue <int []> q = new LinkedList<>(); visited = new boolean[N][N]; for(int a=0;a<N;a++) { if(map[i][a]==1) { q.add(new int[] {i, a}); visited[i][a]=true; } } while(!q.isEmpty()) { int location[]=q.poll(); int x=location[0]; int y=location[1]; if(y==j) { return 1; } for(int a=0; a<N;a++) { if(map[y][a]==1&&y!=x&&!visited[y][a]) { q.add(new int[] {y, a}); visited[y][a]=true; } } } return 0; } }
'Algorithm' 카테고리의 다른 글
[Algorithm] 백준 알고리즘 14502 (연구소) (0) 2020.03.29 [Algorithm] 백준 알고리즘 11724 (연결 요소의 개수) (0) 2020.03.28 [Algorithm] 백준 알고리즘 1012 (유기농 배추) (0) 2020.03.28 [Algorithm] 백준 알고리즘 1697 (숨바꼭질) (0) 2020.03.28 [Algorithm] 백준 알고리즘 2667 (단지 번호 붙이기) (0) 2020.03.22