import java.util.*;
public class Main {
public static void main(String[] args) {
int V = 5;
int[][] edges = {
{0, 1},
{0, 2},
{2, 3},
{2, 4}
};
ArrayList<ArrayList<Integer>> adjList = new ArrayList<>();
for (int i = 0; i < V; i++) {
adjList.add(new ArrayList<>());
}
for (int[] edge : edges) {
int u = edge[0], v = edge[1];
adjList.get(u).add(v);
adjList.get(v).add(u);
}
boolean[] visited = new boolean[V];
System.out.print("DFS (Adj List): ");
dfs(0, adjList, visited);
}
static void dfs(int node, ArrayList<ArrayList<Integer>> adj, boolean[] visited) {
visited[node] = true;
System.out.print(node + " ");
for (int neighbor : adj.get(node)) {
if (!visited[neighbor]) {
dfs(neighbor, adj, visited);
}
}
}
}