Determine Level Structure of Graph

I am trying to output the level structure of a graph (for example, a graph with edges {{1,2},{2,3},{3,4},{3,5},{3,6},{4,7}} would have a level structure {1: {1}, 2: {2}, 3: {3}, 4: {4, 5, 6}, 5: {7}}).

Right now I am thinking of using BFS, keeping track of the level of the current and current’s children at each loop. Since BreadthFirstScan is a built-in function I started there; I could not figure out which events might help to get the level.

Not re-implementing BFS would be ideal, but any suggestions are appreciated.

edit: Assuming no cycles and 1 root