public UndirectedGraphNode searchNode(ArrayList<UndirectedGraphNode> graph,
Map<UndirectedGraphNode, Integer> values,
UndirectedGraphNode node,
int target) {
HashMap<UndirectedGraphNode, Integer> map = new HashMap<>();
Queue<UndirectedGraphNode> q = new LinkedList<UndirectedGraphNode>();
q.add(node);
map.put(node, node.label);
while (!q.isEmpty()) {
UndirectedGraphNode tmp = q.poll();
if (values.get(tmp) == target) {
return tmp;
}
for (UndirectedGraphNode neig : tmp.neighbors) {
if (!map.containsKey(neig)) {
q.add(neig);
map.put(neig, neig.label);
}
}
}
return null;
}