import
java.util.*;
public
class
checkConnectivity {
static
class
Graph{
int
vertices;
LinkedList<Integer> adjacencyList [];
@SuppressWarnings
(
"unchecked"
)
public
Graph(
int
vertices)
{
this
.vertices = vertices;
adjacencyList =
new
LinkedList[vertices];
for
(
int
i =
0
; i<vertices ; i++)
{
adjacencyList[i] =
new
LinkedList<>();
}
}
public
void
addEdge(
int
source,
int
dest)
{
adjacencyList.addFirst(dest);
adjacencyList[dest].addFirst(source);
}
}
public
void
isConnected(Graph graph){
int
vertices = graph.vertices;
LinkedList<Integer> adjacencyList [] = graph.adjacencyList;
boolean
[] visited =
new
boolean
[vertices];
DFS(
0
, adjacencyList, visited);
boolean
connected =
true
;
for
(
int
i =
0
; i <visited.length ; i++) {
if
(!visited[i]){
connected =
false
;
break
;
}
}
if
(connected){
System.out.println(
"Graph is connected"
);
}
else
{
System.out.println(
"Graph is disconnected"
);
}
}
public
void
DFS(
int
source, LinkedList<Integer> adjacencyList [],
boolean
[] visited){
visited =
true
;
for
(
int
i =
0
; i <adjacencyList.size() ; i++) {
int
neighbour = adjacencyList.get(i);
if
(visited[neighbour]==
false
){
DFS(neighbour, adjacencyList, visited);
}
}
}
public
static
void
main(String[] args) {
Graph graph =
new
Graph(
5
);
graph.addEdge(
0
,
1
);
graph.addEdge(
0
,
4
);
graph.addEdge(
1
,
4
);
graph.addEdge(
1
,
3
);
graph.addEdge(
3
,
4
);
graph.addEdge(
2
,
1
);
graph.addEdge(
2
,
3
);
System.out.print(
"Graph 1:- "
);
checkConnectivity c =
new
checkConnectivity();
c.isConnected(graph);
graph =
new
Graph(
5
);
graph.addEdge(
0
,
1
);
graph.addEdge(
0
,
4
);
graph.addEdge(
1
,
4
);
graph.addEdge(
1
,
3
);
graph.addEdge(
3
,
4
);
System.out.print(
"Graph 2:- "
);
c =
new
checkConnectivity();
c.isConnected(graph);
}
}