human
Solve the following python programming problem given the following code:
# Definition for a undirected graph node
# class UndirectedGraphNode:
#     def __init__(self, x):
#         self.label = x
#         self.neighbors = []

class Solution:
    # @param {UndirectedGraphNode[]} graph a list of undirected graph node
    # @param {dict} values a dict, <UndirectedGraphNode, (int)value>
    # @param {UndirectedGraphNode} node an Undirected graph node
    # @param {int} target an integer
    # @return {UndirectedGraphNode} a node
    def searchNode(self, graph, values, node, target):
        # Write your code here
        if not node:
            return None
        
        if values[node] == target:
            return node
            
        queue = [node]
        visited = set([node])
        while queue:
            node = queue.pop(0)
            for n in node.neighbors:
                if values[n] == target:
                    return n
                if n not in visited:
                    visited.add(n)
                    queue.append(n)
        
        return None
                
Given the above code, generate some markdown instructions for it.
assistant
#Here is the Python program you requested.

Search Graph Nodes

Given a undirected graph, a node and a target, return the nearest node to given node which value of it is target, return NULL if you can't find.
There is a mapping store the nodes' values in the given parameters.
Notice
It's guaranteed there is only one available solution
http://www.lintcode.com/en/problem/search-graph-nodes/