Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Test
- {
- static int n;
- static int[][] a;
- static boolean[] used;
- static int[] curr_ans;
- static int min_len = Integer.MAX_VALUE;
- static int[] ans;
- private static void bal(int idx, int len, int last_city)
- {
- if (len >= min_len)
- return;
- if (idx == n)
- {
- len += a[last_city][0];
- if (len >= min_len)
- return;
- for (int i = 0; i < n; i++)
- {
- ans[i] = curr_ans[i];
- }
- min_len = len;
- return;
- }
- for (int i = 1; i < n; i++)
- {
- if (used[i])
- continue;
- used[i] = true;
- curr_ans[idx] = i;
- bal(idx + 1, len + a[last_city][i], i);
- used[i] = false;
- }
- }
- public static void main(String[] args)
- {
- readInput();
- int idx = 0;
- curr_ans[idx++] = 0;
- for (int i = 1; i < n; i++)
- {
- used[i] = true;
- curr_ans[idx] = i;
- bal(idx + 1, a[0][i], i);
- used[i] = false;
- }
- printAns();
- }
- static void readInput()
- {
- System.out.println("Enter values: ");
- Scanner sc = new Scanner(System.in);
- n = sc.nextInt();
- a = new int[n][n];
- used = new boolean[n];
- curr_ans = new int[n];
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- a[i][j] = sc.nextInt();
- }
- }
- ans = new int[n];
- }
- static void printAns()
- {
- System.out.println("ans_len: " + min_len);
- for (int i = 0; i < n; i++)
- {
- System.out.print(ans[i] + " " );
- }
- }
- }
Add Comment
Please, Sign In to add comment