Input: graph , sink
Output: subproblem set
(1) return   if is a tree;
(2) let be the minimum directed cycle found by the DICIRCUIT algorithm in [13];
(3) if   then //  no cycle
(4)find any vertex with out degree larger than 1, and
insert its out edges into ;
(5) ;
(6) foreach   do
(7);
(8)reverse the direction of edges in , and perform a breadth-first search from the sink;
(9)if  all  vertices are visited  then
(10);
(11)construct subproblem with as the network;
(12) if    then
(13) graph of subproblem ;
(14)return  ;
(15) else
(16)return  ;
Algorithm 3: decomp_directed_cycle.