private void Bfs(HashMap<String,HashSet<String>> g,String s){
        Queue<String> q = new LinkedList<String>();
        HashMap<String,Integer> used = new HashMap<String,Integer>();
        Set<String> keys = g.keySet();
        HashMap<String,String> parent = new HashMap<String,String>();
        HashMap<String,Integer> dist = new HashMap<String,Integer>();
        for(String str : keys){
            used.put(str, 0);
            parent.put(str, new String());
            dist.put(str,0);
        }
        parent.put(s,"Absent");
        q.offer(s);
        used.put(s,1);
        while(!q.isEmpty()){
            String v = q.poll();
            for(String to : g.get(v)){
                if(used.get(to).equals(0)){
                    used.put(to,1);
                    q.offer(to);
                    parent.put(to, v);
                    dist.put(to, dist.get(v)+1);
                }
                else if(to.equals(s)){
                    int cyrcle_len = dist.get(v) +1;
                    if(cyrcle_len > minLen) return;
                    else{
                        if(cyrcle_len<minLen){
                            cyrcles.clear();
                            minLen = cyrcle_len;
                        }
                        //build cyrcle, add to set
                        ArrayList<String> path = new ArrayList<String>();
                        path.add(to);
                        for(String i = v; !i.equals("Absent"); i = parent.get(i)){
                            path.add(i);
                        }
                        Collections.reverse(path);
                        cyrcles.add(path);
                    }
                }
            }
        }
        
    }