The Shortest Loop — Solution & Editorial
BFS from every vertex; when BFS meets a node from two different parents, a cycle of length dist[u]+dist[v]+1 closes. The minimum over all sources is the girth.
Complexity: O(N(N + M))
Watch out: Skip the BFS parent edge, but a cross edge to an already-visited node at the same or next layer closes the cycle.