File tree 1 file changed +83
-0
lines changed 1 file changed +83
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .Scanner ;
2
+
3
+ class Hamiltonian {
4
+ static int [][] graph ;
5
+ static int [] soln ;
6
+ static int n , count = 0 ;
7
+
8
+ public static void main (String [] args ) {
9
+ Scanner scanner = new Scanner (System .in );
10
+
11
+ System .out .println ("Enter Number of Vertices" );
12
+ n = scanner .nextInt ();
13
+
14
+ graph = new int [n + 1 ][n + 1 ];
15
+ System .out .println ("Enter Adjacency Matrix" );
16
+ for (int i = 1 ; i <= n ; i ++) {
17
+ for (int j = 1 ; j <= n ; j ++) {
18
+ graph [i ][j ] = scanner .nextInt ();
19
+ }
20
+ }
21
+
22
+ soln = new int [n + 1 ];
23
+
24
+ System .out .println ("Hamiltonian Cycle are" );
25
+
26
+ soln [1 ] = 1 ;
27
+ hamiltonian (2 );
28
+
29
+ if (count == 0 ) {
30
+ System .out .println ("No Hamiltonian Cycle" );
31
+ }
32
+ }
33
+
34
+ static void hamiltonian (int k ) {
35
+ while (true ) {
36
+ nextValue (k );
37
+
38
+ if (soln [k ] == 0 ) {
39
+ return ;
40
+ }
41
+ if (k == n ) {
42
+ printArray ();
43
+ } else {
44
+ hamiltonian (k + 1 );
45
+ }
46
+ }
47
+ }
48
+
49
+ static void nextValue (int k ) {
50
+ while (true ) {
51
+
52
+ soln [k ] = (soln [k ] + 1 ) % (n + 1 );
53
+
54
+ if (soln [k ] == 0 ) {
55
+ return ;
56
+ }
57
+
58
+ if (graph [soln [k - 1 ]][soln [k ]] != 0 ) {
59
+ int j ;
60
+ for (j = 1 ; j < k ; j ++) {
61
+ if (soln [j ] == soln [k ]) {
62
+ break ;
63
+ }
64
+ }
65
+
66
+ if (j == k ) {
67
+
68
+ if (k < n || (k == n && graph [soln [n ]][soln [1 ]] != 0 )) {
69
+ return ;
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ static void printArray () {
77
+ count += 1 ;
78
+ for (int i = 1 ; i <= n ; i ++) {
79
+ System .out .print (soln [i ] + " " );
80
+ }
81
+ System .out .println (soln [1 ]);
82
+ }
83
+ }
You can’t perform that action at this time.
0 commit comments