Поиск в глубину, компоненты связности неориентированного графа
Дан неориентированный граф, возможно, с петлями и кратными ребрами. Необходимо построить компоненту связности, содержащую первую вершину. Вывести снаяала количество вершин в компоненте связности, на следующей строке - сами вершины компоненты связности, перечисленные в порядке возрастания номеров.
вот мой код, который не проходит все тесты... в чем ошибка?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
class Edge
{
int source, dest;
public Edge(int source, int dest)
{
this.source = source;
this.dest = dest;
}
}
class Graph
{
List<List<Integer>> adjList = null; //все связи
Graph(List<Edge> edges, int n)
{
adjList = new ArrayList<>();
for (int i = 0; i < n; i++) {
adjList.add(new ArrayList<>());
}
for (Edge edge: edges)
{
int source = edge.source;
int dest = edge.dest;
adjList.get(source).add(dest);
adjList.get(dest).add(source);
}
}
}
class Main
{
public static void DFS(Graph graph, int v, boolean[] used)
{
//текущая вершина использована
used[v] = true;
System.out.print(v + " ");
for (int j: graph.adjList.get(v))
{
if (!used[j])
{
DFS(graph, j, used);
}
}
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt(); //verc,
int m = con.nextInt(); //edges
List<Edge> edges = Arrays.asList();
for(int i=0; i<m; i++)
{
int v = con.nextInt();
int w = con.nextInt();
Edge _ed = new Edge(v, w);
}
Graph graph = new Graph(edges, n+1);
boolean[] used = new boolean[n+1];
System.out.println(used.length - 1);
for (int i = 1; i < n+1; i++)
{
if (!used[i])
{
DFS(graph, i, used);
}
}
}
}