Napisać w JAvie

Wykaz krawędzi pewnego grafu niezorientowanego przechowywany jest w SQL-owym repozytorium danych (w bazie danych) w tabeli o
nazwie Gtable. Struktura tabeli utworzona została z wykorzystaniem instrukcji
CREATE TABLE Gtable (
id int NOT NULL,
x int NOT NULL,
y int NOT NULL,
p float NOT NULL,
)
CONSTRAINT [PK_Gtable] PRIMARY KEY ( id )
Połączenie do SQL-owej bazy danych (dostęp do bazy) realizowany jest z wykorzystaniem driverów JDBC poprzez wykonanie metody
String database = <connection_string>; // gdzie <connection_string> parametr linii komend
Connection conn = DriverManager.getConnection(database);
Wierzchołki grafu numerowane są od 1 do n, przy czym n = max(max(x), max(y)) – określone jest największą wartością etykiety
wierzchołka występującą w tabeli Gtable.
Każdy wiersz tabeli interpretowany jest jako opis krawędzi łączącej wierzchołki x oraz y. Krawędź grafu niezorientowanego opisywana
jest jednokrotnie tj. jeżeli w tabeli występuje para (x,y) to nie wystąpi (y,x). Atrybut p krawędzi oznacza maksymalną przepustowość na odcinku
pomiędzy x a y (przepustowość w obu kierunkach jest taka sama).
Należy wyznaczyć ścieżkę o najmniejszym koszcie transportu łączącą wierzchołek o numerze 1 z wierzchołkiem k którego indeks
określony jest parametrem linii komend <indeks> oraz wyznaczyć wartość tego kosztu. Koszt transportu definiowany dla każdego z węzłów
ścieżki (dla węzła początkowego oraz końcowego z definicji przyjmujemy 0) jak bezwzględna wartość różnicy przepustowości krawędzi ścieżki
o końcach w tym wierzchołku, czyli np. w przypadku węzła y przez który przechodzi ścieżka z wykorzystaniem krawędzi (x,y) oraz (y,z) o
przepustowości odpowiednio pxy i pyz koszt transportu wyniesie | pxy - pyz |. Dla ścieżki koszt transportu definiowany jest jako suma kosztów
transportu wszystkich wierzchołków wchodzących w skład ścieżki.

Program ma być zapisany wyłącznie w dwóch plikach : Path.java zawierającym implementację mechanizmu poszukiwania rozwiązania
(ścieżki), oraz Main.java – zawierającym programem główny. Program nie może korzystać z jakichkolwiek bibliotek zewnętrznych oraz nie
może być zależny od jakiegokolwiek dialektu SQL.
Proces kompilacji musi być możliwy z użyciem komendy
javac –Xlint Path.java Main.java
Uruchomienie programu winno być możliwe z użyciem komendy
java Main <connection_string> <indeks>
Wynik końcowy (w strumieniu wyjściowym nie powinny pojawiać się jakiekolwiek inne elementy – np. wydruki kontrolne) działania
programu musi zawierać pojedynczą liczbę określającą koszt transportu ścieżki łączącej wierzchołki 1 oraz k (z dokładnością do 3 miejsc
dziesiętnych), a więc np.
Przepustowość : 76.752

Jak by ktoś mógł ktoś coś doradzić co i jak napisać , z tego powodu, bo nigdy nie siedziałem w programowaniu aby tak sie zagłębi aby wykonać to zadanie.
Jak by ktoś pomogł to serdecznie dziekuje