g = ;

components=ConnectedComponents[g];

edges=Union[Cases[EdgeList[g]/.Table[v->First[Select[components,MemberQ[#,v]&]],{v,VertexList[g]}],u_\[DirectedEdge]v_/;u=!=v]];

cond=Graph[components,edges];

h=Graph[Join@@TopologicalSort[cond],EdgeList[g],Options[g]];

GraphicsGrid[({#,ArrayPlot[AdjacencyMatrix[#]]}&/@{g,h})\[Transpose],ImageSize->400]