You can keep a list of the visited points to avoid cycles if you want to keep your symetric facts (even though I don't get why). I coded a little example without the road number :
road(a, b, 2).
road(b, a, 3).
road(b, c, 5).
get_road(a, c, FuelConsumed) :-
get_road(a, c, [a], 0, FuelConsumed).
We introduce two new parameters here, the third is a list of the visited points, the fourth is an accumulator to keep track of the consumed fuel.
get_road(Start, End, _Visited, TotalFuel, FuelConsumed) :-
road(Start, End, Fuel),
FuelConsumed is TotalFuel + Fuel.
If this step is the final step, we stop.
get_road(Start, End, Visited, TotalFuel, FuelConsumed) :-
road(Start, Waypoint, Fuel),
\+ member(Waypoint, Visited),
NewTotalFuel is TotalFuel + Fuel,
get_road(Waypoint, End, [Waypoint|Visited], NewTotalFuel, FuelConsumed).
Else, we pick a waypoint that we didn't already visit and go on.