   function [Lst,Mark] = TopSort2(L,b) 
%% function [Lst,Mark] = TopSort(L,b) 
%% does a top. sort of tasks for solving (I+L)x = b
%% L is sparse lower triangular and b is sparse
%% 
 n = size(L,1);
 Mark = zeros(n,1); Lst = [];
 [ii, jj, rr] = find(b);
%%-------------------- Top. Sort only from nodes of b
 for k=1:length(ii) 
     u = ii(k);
     if (Mark(u) == 0) 
       [Lst, Mark] = dfs(u, L, Lst, Mark);
     end
 end
