Fiz um parser de grafos em C. Depois que um arquivo de configuração de grafo for lido (src/test.txt, por exemplo), você pode fazer perguntas para encontrar o menor caminho entre dois vértices (utilizando breadth-first search).
Exemplo:
Implementei utilizando minha hash table. Cada vértice do grafo tem um nome e uma lista de strings que representam as arestas; depois de lidos, os vértices são inseridos na hash table que por sua vez é utilizada na função de busca.