1
+ import java .util .Scanner ;
2
+ import java .util .ArrayList ;
3
+
4
+
5
+ class Cycle {
6
+
7
+ private int nodes , edges ;
8
+ private int [][] adjacencyMatrix ;
9
+ private boolean [] visited ;
10
+ ArrayList <ArrayList <Integer >> cycles = new ArrayList <ArrayList <Integer >>();
11
+ private boolean [] finalCycles ;
12
+
13
+ public Cycle () {
14
+ Scanner in = new Scanner (System .in );
15
+ System .out .print ("Enter the no. of nodes: " );
16
+ nodes = in .nextInt ();
17
+ System .out .print ("Enter the no. of Edges: " );
18
+ edges = in .nextInt ();
19
+
20
+ adjacencyMatrix = new int [nodes ][nodes ];
21
+ visited = new boolean [nodes ];
22
+
23
+ for (int i = 0 ; i < nodes ; i ++) {
24
+ visited [i ] = false ;
25
+ }
26
+
27
+ System .out .println ("Enter the details of each edges <Start Node> <End Node>" );
28
+
29
+ for (int i = 0 ; i < edges ; i ++) {
30
+ int start , end ;
31
+ start = in .nextInt ();
32
+ end = in .nextInt ();
33
+ adjacencyMatrix [start ][end ] = 1 ;
34
+ }
35
+
36
+ }
37
+
38
+ public void start () {
39
+ for (int i = 0 ; i < nodes ; i ++) {
40
+ ArrayList <Integer > temp = new ArrayList <>();
41
+ dfs (i , i , temp );
42
+ for (int j = 0 ; j < nodes ; j ++) {
43
+ adjacencyMatrix [i ][j ] = 0 ;
44
+ adjacencyMatrix [j ][i ] = 0 ;
45
+ }
46
+ }
47
+ }
48
+
49
+ private void dfs (Integer start , Integer curr , ArrayList <Integer > temp ) {
50
+ temp .add (curr );
51
+ visited [curr ] = true ;
52
+ for (int i = 0 ; i < nodes ; i ++) {
53
+ if (adjacencyMatrix [curr ][i ] == 1 ) {
54
+ if (i == start ) {
55
+ cycles .add (new ArrayList <Integer >(temp ));
56
+ } else {
57
+ if (!visited [i ]) {
58
+ dfs (start , i , temp );
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ if (temp .size () > 0 ) {
65
+ temp .remove (temp .size () - 1 );
66
+ }
67
+ visited [curr ] = false ;
68
+ }
69
+
70
+ public void printAll () {
71
+ for (int i = 0 ; i < cycles .size (); i ++) {
72
+ for (int j = 0 ; j < cycles .get (i ).size (); j ++) {
73
+ System .out .print (cycles .get (i ).get (j ) + " -> " );
74
+ }
75
+ System .out .println (cycles .get (i ).get (0 ));
76
+ System .out .println ();
77
+ }
78
+
79
+ }
80
+
81
+ }
82
+
83
+ public class Cycles {
84
+ public static void main (String [] args ) {
85
+ Cycle c = new Cycle ();
86
+ c .start ();
87
+ c .printAll ();
88
+ }
89
+ }
0 commit comments