import
java.util.ArrayList;
class
GFG {
boolean
isSafe(
int
v,
int
graph[][],
ArrayList<Integer> path,
int
pos)
{
if
(graph[path.get(pos -
1
)][v]
==
0
)
return
false
;
for
(
int
i =
0
; i < pos; i++)
if
(path.get(i) == v)
return
false
;
return
true
;
}
boolean
hasCycle;
void
hamCycle(
int
graph[][])
{
hasCycle =
false
;
ArrayList<Integer> path
=
new
ArrayList<>();
path.add(
0
);
boolean
[] visited
=
new
boolean
[graph.length];
for
(
int
i =
0
;
i < visited.length; i++)
visited[i] =
false
;
visited[
0
] =
true
;
FindHamCycle(graph,
1
, path,
visited);
if
(!hasCycle) {
System.out.println(
"No Hamiltonian Cycle"
+
"possible "
);
return
;
}
}
void
FindHamCycle(
int
graph[][],
int
pos,
ArrayList<Integer> path,
boolean
[] visited)
{
if
(pos == graph.length) {
if
(graph[path.get(path.size() -
1
)]
[path.get(
0
)]
!=
0
) {
path.add(
0
);
for
(
int
i =
0
;
i < path.size(); i++) {
System.out.print(
path.get(i) +
" "
);
}
System.out.println();
path.remove(path.size() -
1
);
hasCycle =
true
;
}
return
;
}
for
(
int
v =
0
;
v < graph.length; v++) {
if
(isSafe(v, graph, path, pos)
&& !visited[v]) {
path.add(v);
visited[v] =
true
;
FindHamCycle(
graph, pos +
1
,
path, visited);
visited[v] =
false
;
path.remove(
path.size() -
1
);
}
}
}
public
static
void
main(String args[])
{
GFG hamiltonian =
new
GFG();
int
[][] graph = {
{
0
,
1
,
1
,
0
,
0
,
1
},
{
1
,
0
,
1
,
0
,
1
,
1
},
{
1
,
1
,
0
,
1
,
0
,
0
},
{
0
,
0
,
1
,
0
,
1
,
0
},
{
0
,
1
,
0
,
1
,
0
,
1
},
{
1
,
1
,
0
,
0
,
1
,
0
},
};
hamiltonian.hamCycle(graph);
}
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment