File tree Expand file tree Collapse file tree 1 file changed +58
-0
lines changed
Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.* ;
4+
5+ public class Main {
6+ static int ans;
7+ static int N ,K ;
8+ static int [][] dist;
9+ public static void main (String [] args ) throws IOException {
10+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
11+ BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System . out));
12+ StringTokenizer st = new StringTokenizer (br. readLine());
13+
14+ N = Integer . parseInt(st. nextToken());
15+ K = Integer . parseInt(st. nextToken());
16+
17+ dist = new int [N ][N ];
18+ for (int i = 0 ; i < N ; i++ ) {
19+ st = new StringTokenizer (br. readLine());
20+ for (int j = 0 ; j < N ; j++ ) {
21+ dist[i][j] = Integer . parseInt(st. nextToken());
22+ }
23+ }
24+
25+ for (int k = 0 ; k < N ; k++ ) {
26+ for (int i = 0 ; i < N ; i++ ) {
27+ for (int j = 0 ; j < N ; j++ ) {
28+ dist[i][j] = Math . min(dist[i][j], dist[i][k] + dist[k][j]);
29+ }
30+ }
31+ }
32+
33+ ans = Integer . MAX_VALUE ;
34+ boolean [] visited = new boolean [N ];
35+ visited[K ] = true ;
36+ find(visited,1 ,0 ,K );
37+
38+ bw. write(ans + " " );
39+ bw. close();
40+ }
41+
42+ static void find (boolean [] visited , int depth , int sum , int prev ){
43+ if (depth == N ){
44+ ans = Math . min(ans,sum);
45+ return ;
46+ }
47+ if (sum >= ans) return ;
48+ for (int i = 0 ; i < N ; i++ ) {
49+ if (! visited[i]){
50+ visited[i] = true ;
51+ find(visited, depth+ 1 ,sum+ dist[prev][i], i);
52+ visited[i] = false ;
53+ }
54+ }
55+ }
56+
57+ }
58+ ```
You can’t perform that action at this time.
0 commit comments