b2=b*[1 0;0 i]*(b'>-1);
W=abs(b2-b2.');
W(~a)=inf;
[m,n]=size(W);
L=1;
for j=1:n
P(j)=0;
D(j)=W(j,1);
if D(j) < Inf
P(j)=1;
end
end
Lnew=L;
searchset=1:n;
while length(L) < n
searchset=strrep(num2str(searchset),num2str(Lnew),'');
searchset=str2num(searchset);
[Dmin,kind]=min(D(searchset));
k=searchset(kind);
Lnew=k;
L=[L Lnew];
for j=2:n
if all(j~=L)
if D(j) > D(k)+W(k,j)
D(j)=D(k)+W(k,j);
P(j)=k;
end
end
end
end
c = L(end);
while c(1)-1
c = [P(c(1)) c];
end