Eh mio caro il discorso è abbastanza complesso
Prima cosa devi decidere come implementare il grafo mi sembra che ci siano tre opzioni :
  • Mediante lista di adiacenza
  • Mediante matrice di adiacenza
  • Mediante matrice di incidenza

Poi devi scegliere l'algoritmo ovvero puoi usare la BFS o la DFS
Inoltre per usare questi algoritmi devi usare delle strutture dati elementari di supporto ovvero stack o coda e di conseguenza le funzioni per la loro manipolazione ovvero le varie pop(), push(), top() ecc. ecc.

Come vedi non è facile, puoi provare a cercare delle librerie che abbiano implementato tali funzioni se non ricordo male il Collection Framework di java implementa queste strutture dati però i grafi non credo.