public int sixDegrees(List<UndirectedGraphNode> graph,
                          UndirectedGraphNode s,
                          UndirectedGraphNode t) {
        // Write your code here
        if (graph == null) return 0;
        if (s == t) return 0;
        if (s.neighbors.contains(t)) return 1;

        HashMap<UndirectedGraphNode, Integer> map = new HashMap<>();
        Queue<UndirectedGraphNode> q = new LinkedList<>();

        q.add(s);
        map.put(s, 0);

        while (!q.isEmpty()) {
            UndirectedGraphNode node = q.poll();
            int step = map.get(node);
            for (int i = 0; i < node.neighbors.size(); i++) {
                if (map.containsKey(node.neighbors.get(i))) continue;
                map.put(node.neighbors.get(i), step + 1);
                q.offer(node.neighbors.get(i));
                if (node.neighbors.get(i) == t)
                return step + 1;
            }
        }
        return -1;
    }

results matching ""

    No results matching ""