728x90
반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/11403
import java.util.Scanner; public class Test11403 { static int N; static int[][] adMatrix; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); adMatrix = new int[N+1][N+1]; for(int i=1; i<=N; i++) { for(int j=1; j<=N; j++) { adMatrix[i][j] = sc.nextInt(); } } //알고리즘 풀이 for(int i=1; i<=N; i++) { int[] visit = new int[N+1]; DFS(i, visit, false); for(int j=1; j<=N; j++) { System.out.print(visit[j]+" "); }System.out.println(); } } static void DFS(int x, int[] visit, Boolean isFirst) { if(isFirst) { visit[x] = 1; } for(int i=1; i<=N; i++) { if(adMatrix[x][i]==1 && visit[i]==0) { DFS(i, visit, true); } } } }
import java.util.Scanner; public class Test11403{ static int N; static int[][] adMatrix; static void DFS(int x, int[] visit, boolean isFirst) { if(!isFirst) { //isFirst가 false일 경우 visit[x]=1; } for(int i=1; i<=N; i++) { if(adMatrix[x][i]==1 && visit[i]==0) { DFS(i, visit, false); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); adMatrix = new int[N+1][N+1]; //행렬 입력받기 for(int i=1; i<=N; i++) { for(int j=1; j<=N; j++) { adMatrix[i][j] = sc.nextInt(); } } //알고리즘 풀이 for(int i=1; i<=N; i++) { int[] visit = new int[N+1]; DFS(i, visit, true); for(int j=1; j<=N; j++) { System.out.print(visit[j]+" "); }System.out.println(); } } }
import java.util.Scanner; public class Test11403{ static int N; static int[][] adMatrix; static int[][] result; static void DFS(int x, int[] visit, boolean isFirst) { if(!isFirst) { //isFirst가 false일 경우 visit[x]=1; } for(int i=1; i<=N; i++) { if(adMatrix[x][i]==1 && visit[i]==0) { DFS(i, visit, false); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); adMatrix = new int[N+1][N+1]; result = new int[N+1][N+1]; //행렬 입력받기 for(int i=1; i<=N; i++) { for(int j=1; j<=N; j++) { adMatrix[i][j] = sc.nextInt(); } } //알고리즘 풀이 for(int i=1; i<=N; i++) { int[] visit = new int[N+1]; DFS(i, visit, true); result[i] = visit; } //출력하기 for(int i=1; i<result.length; i++) { for(int j=1; j<result.length; j++) { System.out.print(result[i][j]+" "); } if(i != result.length-1) { System.out.println(); } } } }
결과입니다.
728x90
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 알고리즘 14502번 연구소(DFS 문제) !! (0) | 2017.10.20 |
---|---|
백준 알고리즘 2667번 단지번호붙이기!! (0) | 2017.10.19 |
백준 알고리즘 1915번 가장 큰 정사각형!! (0) | 2017.10.17 |
백준 알고리즘 11724번 연결 요소의 개수(DFS문제) !! (0) | 2017.10.17 |
백준 알고리즘 1260번 DFS와 BFS (0) | 2017.10.16 |