Notice
Recent Posts
Recent Comments
Link
할껀하고놀자
[백준] 외판원 순회 2 본문
728x90
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import java.util.Scanner; public class Main { static int min = Integer.MAX_VALUE; static boolean [] visited; // 배열 탐색하는 것. static int start = 0; // 시작점. static int [][] arr; static int n; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); arr= new int [n][n]; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { arr[i][j] = sc.nextInt(); } } visited = new boolean [n]; for (int i = 0; i < n; i++) { start = i; dfs(i,i,0,0); } System.out.println(min); } static void dfs(int y,int x,int cnt,int sum) { // 순회 다 끝났거나, 다시 되돌아 왔을 때, if(cnt == n && start == x) { // 최소값을 비교해준다. min = Math.min(min, sum); return ; } // for문을 돌면서. for (int i = 0; i < n; i++) { if(!visited[i]) { // 만약 방문하지 않았다면, if(arr[x][i]!=0) { // 0이 아니고, x열에서 출발한 것이 min 보다 작을 경우에만 visited[i] = true; // 방문 표시 해주고, dfs(x,i,cnt+1,sum+arr[x][i]); // 더해준다. visited[i] = false; } } } } } | cs |
'[IT] > 백준' 카테고리의 다른 글
[백준] N과 M (2) (0) | 2019.04.01 |
---|---|
[백준] 암호 만들기 (0) | 2019.04.01 |
[9095] 1,2,3 더하기 (0) | 2018.09.03 |
[11726] 2xn 타일링 문제 (0) | 2018.09.01 |
[알고리즘]'나는 요리사다' 문제 (0) | 2018.04.06 |
Comments