  We consider the Shortest Odd Path problem, where given an undirected graph
$G$, a weight function on its edges, and two vertices $s$ and $t$ in $G$, the
aim is to find an $(s,t)$-path with odd length and, among all such paths, of
minimum weight. For the case when the weight function is conservative, i.e.,
when every cycle has non-negative total weight, the complexity of the Shortest
Odd Path problem had been open for 20 years, and was recently shown to be
NP-hard. We give a polynomial-time algorithm for the special case when the
weight function is conservative and the set $E^-$ of negative-weight edges
forms a single tree. Our algorithm exploits the strong connection between
Shortest Odd Path and the problem of finding two internally vertex-disjoint
paths between two terminals in an undirected edge-weighted graph. It also
relies on solving an intermediary problem variant called Shortest
Parity-Constrained Odd Path where for certain edges we have parity constraints
on their position along the path. Also, we exhibit two FPT algorithms for
solving Shortest Odd Path in graphs with conservative weight functions. The
first FPT algorithm is parameterized by $|E^-|$, the number of negative edges,
or more generally, by the maximum size of a matching in the subgraph of $G$
spanned by $E^-$. Our second FPT algorithm is parameterized by the treewidth of
$G$.
