<｜begin▁of▁sentence｜>### Instruction:
As a researcher working on a project to analyze and visualize complex networks, you have access to a dataset in 'graph_components.gml' which contains information about the connections and vertices of a graph. To better understand the relationships within the graph, you are looking to create a tree structure representing the same connections using a breadth-first search. Additionally, you want to keep a record of how the vertices correspond between the original graph and the resulting tree graph. To accomplish this, you are considering utilizing the NetworkX library which provides a breadth-first search algorithm to traverse the graph and extract the necessary information.
### Response:
import igraph as ig

# Loading a graph from a GML file
g = ig.read('graph_components.gml')

# Use topological_sorting to find a suitable set of sources
sources = g.topological_sorting()

# Unfolding the graph into a tree
tree, mapping = g.unfold_tree(sources=sources[0], mode=ig.ALL)

# Formatting the mapping for display
formatted_mapping = {str(new): old for new, old in enumerate(mapping)}

# Outputting the results
print('Unfolded tree graph:', tree)
print('Vertex mapping:', formatted_mapping)
<|EOT|>
