public ArrayList<Node> extractComponent(ArrayList<Node> in, int n){
        Set<Integer> S = new HashSet<>();
        ArrayList<Integer> D = new ArrayList<>();
        int d;
        D.add(n);
        Node N;
        int p;
        while(!D.isEmpty())
        {
            d = D.remove(0);
            S.add(d);
            N = in.get(d);
            for(int i=0;i<N.getDegree();i++)
            {
                p = N.getNeighbour(i).id;
                if(!S.contains(p))
                {
                    S.add(p);
                    if(!D.contains(p))
                    {
                        D.add(p);
                    }
                }
            }
        }
        Iterator it = S.iterator();
        ArrayList<Node> res = new ArrayList<Node>();
        while(it.hasNext())
        {
            d = (Integer)it.next();
            res.add(in.get(d));
        }
        in.clear();
        for(int i=0;i<res.size();i++)
        {
            res.get(i).id=i;
        }
        return res;
    }