import
java.util.*;
class
GFG {
public
static
void
AddEdges(
int
node,
ArrayList<Integer>[] adj,
ArrayList<Integer>[] clone,
boolean
[] visited)
{
visited[node] =
true
;
for
(
int
it : adj[node]) {
if
(!visited[it]) {
clone[node].add(it);
clone[it].add(node);
}
}
}
static
void
cloneList(ArrayList<Integer> adj[],
int
n)
{
ArrayList<Integer>[] clone =
new
ArrayList[n];
for
(
int
i =
0
; i < n; i++)
clone[i] =
new
ArrayList<>();
boolean
[] visited =
new
boolean
[n];
for
(
int
node =
0
; node < n; node++) {
if
(!visited[node]) {
AddEdges(node, adj, clone, visited);
}
}
for
(
int
node =
0
; node < n; node++) {
System.out.print(
"Node "
+ node
+
" is connected to "
);
for
(
int
it : clone[node]) {
System.out.print(it +
" "
);
}
System.out.println();
}
}
public
static
void
main(String[] args)
{
int
N =
5
;
ArrayList<Integer>[] adj =
new
ArrayList[N];
adj[
0
] =
new
ArrayList<>(List.of(
1
,
2
));
adj[
1
] =
new
ArrayList<>(List.of(
0
,
3
));
adj[
2
] =
new
ArrayList<>(List.of(
0
,
3
,
4
));
adj[
3
] =
new
ArrayList<>(List.of(
1
,
2
));
adj[
4
] =
new
ArrayList<>(List.of(
2
));
cloneList(adj, N);
}
}