To jak ktoś może się nauczyć czegoś jak wszystko ma mieć gotowe. Powinien choć raz sam wszystko napisać, stos, kolejkę, drzewa, grafy, itp.
Graf powinieneś zaimplementować jako listę sąsiedzką czyli tablice wierzchołków i każdy wierzchołek ma listę powiązań i dla każdego wierzchołka zazwyczaj trzyma się 2-3 integery potrzebne od przeszukiwańDo , kolorowania, grupowania, itp.
A kolejka priorytetowa też nie jest trudna, najczęściej robi się ją jako kopiec w tablicy, ale też można jak drzewo. Do Dijkstry można użyć kopca, listy lub tablicy, jak sortujesz przez scalanie to to wszystko jedno.
B-F tylko na listach sąsiedzkich bo przy listach złożoność to O(nm), a w tablicy O(n^3)
Nie wiem jak można w ogóle powiedzieć, że bez drzew się obejdzie. Przecież Prim czy Kruskal tworzą właśnie takie drzewa. Do prima trzeba mieć kolejkę piorytetową, do Kruskala wystarczy tablica, bo sprytnie go robiąc złożoność jest O(logn), więc bardzo mała.
Edit:
I nie wiem skąd te kilka godzin ma zająć, napisanie struktury w której jest implementowany graf z funkcją dodawania ścieżek/ usuwania i czyszczenia to żaden problem.