Given a directed graph $G=(V,E)$, and a vertex $s\in V$, for every edge there's an integer weight $w(e)$ (positive or negative), I need to find an algorithm such that for every vertex $v \in V$ it finds the shortest path (by weights) which contains an even number of edges. (I can assume it doesn't have a negative cycles).

Obviously I need to use Bellman-Ford with complexity of $O(|V||E|)$, but how do I manipulate it in such way that the paths will contain an even number of edges?

This is basically the same as my answer. If you already have an implementation of the Bellman-Ford algorithm and it's easier to mess with the graph than to mess with the code, this is the better formulation; if it's easy to modify the code or you're writing it yourself anyway, my formulation might be a bit less cumbersome.
–
jorikiAug 27 '12 at 17:55

@joriki - I wrote my answer before I saw yours. I agree about the idea. the reason I done this in this way is that in my Algorithms course we were not allowed to change existing algorithms withouht formally prove everything from the start (even if the change was trivial) so the idea was always to make a reduction to use existing algorithms.
–
BelgiAug 27 '12 at 18:11

You can do something similar as in this answer: Maintain two separate distances from the source to each vertex, one for paths with an odd number of edges, one for paths with an even number of edges. In each update, use the odd ones to update the even ones and vice versa.