practice of graph data structure