Let 
 be a directed graph, and let 
 be an edge-coloring in red and blue. Let s,t be vertices in G. Find a path from s to t (if exists) so that the number of color changes along this path is minimal.
I have tried to do as follows:
- Let 
 be the graph obtained by removing all the
blue-colored edges of G. Let 
 be the graph obtained
by removing all the red-colored of G. - Let 
be the strongly connected graph of 
, computed
using this algorithm. - Let 
 be the
strongly connected graph of 
, computed using
this algorithm. - Color the vertices of
 in red, and color the vertices of
 in blue. - Let 
 be
the graph obtained by merging 
 with
. - Define the weight of each (existing) edge in G' as 0.
 - For each 
 such that u
belongs to the strongly connected component 
 and v
belongs to the strongly connected component 
 do as
follows: 
- Use Dijkstra algorithm to find a shortest path from the blue strongly connected component of s, to both the blue and red strongly connected components of t.
 - Use Dijkstra algorithm to find a shortest path from the red strongly connected component of s, to both the blue and red strongly connected components of t.
 - Let p denote the shortest path among the four we have just found. (namely, p has minimal number of color alternates). p is a series of strongly connected components. Expand each of them using DFS, to find a corresponding path in G.
 
This algorithm can run in O(E+V*log(v)). Can it be improved or simplified?


