function W = solv(B)
x3JR=1099;
xutW = rand(43,1);
W=Pgas(B);
vxin = wj9q(B,W);
[iyzV,A_B8] = size(B);
O5SA = B(iyzV:-1:1,:);
O5SA = O5SA.';
[cWU4,yBej] = nYyT(O5SA,[1 2],[1 2],4*iyzV*A_B8);
if vxin > yBej
W = [iyzV-cWU4(:,2)+1 cWU4(:,1) iyzV-cWU4(:,4)+1 cWU4(:,3)];
vxin=yBej;
end
O0Uo=rand('state');
rand(x3JR,1);
if vxin>1000 && rand<.5
[cWU4,yBej] = nYyT(O5SA,[1 2],[1 2],4*iyzV*A_B8);
if vxin > yBej
W = [iyzV-cWU4(:,2)+1 cWU4(:,1) iyzV-cWU4(:,4)+1 cWU4(:,3)];
vxin=yBej;
end
end
if vxin>1000 && rand<.5
[cWU4,yBej] = nYyT(O5SA,[1 2],[1 2],4*iyzV*A_B8);
if vxin > yBej
W = [iyzV-cWU4(:,2)+1 cWU4(:,1) iyzV-cWU4(:,4)+1 cWU4(:,3)];
vxin=yBej;
end
end
rand('state',O0Uo);
end
function [W,vxin] = nYyT(oFLV,rysd,zgGp,Nc4K)
[Nzus,nPAo]=size(oFLV);
hc_r= -ones(Nzus+2,nPAo+2);
hc_r(2:end-1,2:end-1)=oFLV;
WEJX = hc_r;
jxFe = 4;
if size(WEJX,2) > 20
QZM_ = 4;
ekGZ = 8;
eAB6 = 18;
else
QZM_ = 3;
ekGZ = 7;
eAB6 = 13;
end
vxin = inf;
U03d = [1 2;2 1];
eMdK = [1 3;3 1];
dwc0 = [3 2 1;1 2 3];
for U9Z0 = rysd
if U9Z0 == 2
[spXL ZsNv] = iToI(WEJX,QZM_,U03d(U9Z0,:));
[UNEc u27U] = hVJ9(ZsNv,spXL,ekGZ,eMdK(U9Z0,:));
[WSBI vsKK] = hVJ9(u27U,UNEc,eAB6,eMdK(U9Z0,:));
else
[spXL ZsNv] = iToI(WEJX,4,U03d(U9Z0,:));
[WSBI vsKK] = hVJ9(ZsNv,spXL,11,eMdK(U9Z0,:));
end
for xv05 = zgGp
z5iI = VC1W(WEJX,vsKK,WSBI,jxFe,eAB6,dwc0(xv05,:))-1;
m2UI = wj9q(oFLV,z5iI);
if m2UI <= vxin
vxin = m2UI;
W = z5iI;
jxFe = jxFe - 1;
end
end
end
end
function tJua = wj9q(B,W)
Nzus=size(B,1);
B(W(:,1)+(W(:,2)-1)*Nzus)=0;
B(W(:,3)+(W(:,4)-1)*Nzus)=0;
tJua=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [PtlA LeIV] = vVCG(B,xly2)
jSob = sort(B(B>0),'descend');
xEPJ = size(jSob,1);
if xEPJ < 1
PtlA = [];
LeIV = 0;
return
end
o7yg=jSob(diff([0;jSob])~=0);
PtlA = zeros(nnz(o7yg),3);
zCi2=histc(jSob,o7yg(end:-1:1));
PtlA(:,1)=o7yg;
PtlA(:,2)=zCi2(end:-1:1);
LeIV=nnz(o7yg);
if xly2 < 3, return, end
for D377 = 1:LeIV
if PtlA(D377,2) >= 2
P2WH = PtlA(D377,1);
[JEWF J9Bk] = find(B == P2WH);
oqkV = 0;
IN5G = size(JEWF,1);
oqkV=sum(abs(diff(JEWF))+abs(diff(J9Bk)));
PtlA(D377,3) = PtlA(D377,2)*P2WH - 0.85 * oqkV;
end
end
end
function [W B] = iToI(B,eAB6,xly2)
W = [];
[PtlA LeIV] = vVCG(B,xly2);
if LeIV < 1
return
end
PtlA=sortrows(PtlA,-xly2);
for D377 = 1:LeIV
if PtlA(D377,2) >= 2
P2WH = PtlA(D377,1);
[JEWF J9Bk] = find(B == P2WH);
IN5G = size(JEWF,1);
btSU = IN5G*(IN5G-1)/2;
dist = zeros(btSU,3);
[ea82 cRGg]=find(tril(ones(IN5G),-1));
dist(:,1)=cRGg;
dist(:,2)=ea82;
dist(:,3)=abs(J9Bk(ea82)-J9Bk(cRGg))+abs(JEWF(ea82)-JEWF(cRGg));
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
xEPJ = 0;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > eAB6+1
break
end
gs2H = dist(U9Z0,1);
Yjez = dist(U9Z0,2);
path = N1W6(B,[JEWF(gs2H); JEWF(Yjez)], [J9Bk(gs2H); J9Bk(Yjez)], -P2WH, eAB6, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
xEPJ = 2;
edit = [1:(gs2H-1) (gs2H+1):(Yjez-1) (Yjez+1):IN5G];
JEWF = [JEWF(gs2H); JEWF(Yjez); JEWF(edit)];
J9Bk = [J9Bk(gs2H); J9Bk(Yjez); J9Bk(edit)];
break
else
end
end
if xEPJ < 2
continue
end
for UwSh = 3:IN5G
[k16Y QwX_] = find(B == -P2WH);
tnf7 = size(k16Y,1);
btSU = tnf7 * (IN5G - xEPJ);
XiSY = (1:tnf7*IN5G)';
Yjez=mod(XiSY-1,IN5G)+1;
gs2H=ceil(XiSY/IN5G);
gbC8 = (Yjez>xEPJ);
gs2H = gs2H(gbC8);
Yjez = Yjez(gbC8);
oqkV = abs(k16Y(gs2H)-JEWF(Yjez)) + abs(QwX_(gs2H)-J9Bk(Yjez));
dist = [gs2H,Yjez,oqkV];
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
bqvL = false(IN5G,1);
QNCK = false;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > eAB6+1
break
end
Yjez = dist(U9Z0,2);
if bqvL(Yjez)
randperm(4);
continue
end
gs2H = dist(U9Z0,1);
path = N1W6(B,[k16Y(gs2H); JEWF(Yjez)], [QwX_(gs2H); J9Bk(Yjez)], -P2WH, eAB6, P2WH);
bqvL(Yjez)=true;
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
xEPJ = xEPJ + 1;
QNCK = true;
JEWF([UwSh Yjez]) = JEWF([Yjez UwSh]);
J9Bk([UwSh Yjez]) = J9Bk([Yjez UwSh]);
break
end
end
if ~QNCK
break
end
end
end
end
end
function [W B] = hVJ9(B,W,Cy3C,xly2)
[PtlA LeIV] = vVCG(B,xly2);
if LeIV < 1, return, end
PtlA=sortrows(PtlA,-xly2);
for D377 = 1:LeIV
P2WH = PtlA(D377,1);
tnf7 = sum(B == -P2WH);
if tnf7 == 0
if PtlA(D377,2) >= 2
[JEWF J9Bk] = find(B == P2WH);
IN5G = size(JEWF,1);
btSU = IN5G*(IN5G-1)*.5;
XiSY = (1:IN5G*IN5G)';
Yjez=mod(XiSY-1,IN5G)+1;
gs2H=ceil(XiSY/IN5G);
gbC8 = (gs2H<Yjez);
gs2H = gs2H(gbC8);
Yjez = Yjez(gbC8);
oqkV = abs(JEWF(gs2H)-JEWF(Yjez)) + abs(J9Bk(gs2H)-J9Bk(Yjez));
dist = [gs2H,Yjez,oqkV];
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
maxstep = min(Cy3C,2*P2WH+1);
QNCK = false;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > maxstep+1
break
end
gs2H = dist(U9Z0,1);
Yjez = dist(U9Z0,2);
path = N1W6(B,[JEWF(gs2H); JEWF(Yjez)], [J9Bk(gs2H); J9Bk(Yjez)], -P2WH, Cy3C, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
QNCK = true;
break
end
end
if ~QNCK
continue
end
end
end
[JEWF J9Bk] = find(B == P2WH);
bLWA = size(JEWF,1);
maxstep = min(Cy3C,P2WH+1);
for UwSh = 1:bLWA
[k16Y QwX_] = find(B == -P2WH);
tnf7 = size(k16Y,1);
btSU = tnf7 * (bLWA-UwSh+1);
dist = zeros(btSU,3);
U9Z0 = 0;
for gs2H = 1:tnf7
for Yjez = UwSh:bLWA
U9Z0 = U9Z0 + 1;
dist(U9Z0,1) = gs2H;
dist(U9Z0,2) = Yjez;
dist(U9Z0,3) = abs(k16Y(gs2H)-JEWF(Yjez)) + abs(QwX_(gs2H)-J9Bk(Yjez));
end
end
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
bqvL = false(bLWA,1);
QNCK = false;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > maxstep+1
break
end
Yjez = dist(U9Z0,2);
if bqvL(Yjez)
randperm(4);
continue
end
gs2H = dist(U9Z0,1);
path = N1W6(B,[k16Y(gs2H); JEWF(Yjez)], [QwX_(gs2H); J9Bk(Yjez)], -P2WH, Cy3C, 2*P2WH);
bqvL(Yjez)=true;
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
QNCK = true;
JEWF([UwSh Yjez]) = JEWF([Yjez UwSh]);
J9Bk([UwSh Yjez]) = J9Bk([Yjez UwSh]);
break
end
end
if ~QNCK
break
end
end
end
end
function [WMIG yHZC] = NdZo(hc_r,B,path)
[CEBs KEiM] = size(B);
WMIG = hc_r == 0;
yHZC = WMIG;
WMIG(:,[1 KEiM]) = false;
yHZC([1 CEBs],:) = false;
for D377 = 1:size(path,1)
if path(D377,1) == path(D377,3)
WMIG(path(D377,1),path(D377,2)) = false;
WMIG(path(D377,3),path(D377,4)) = false;
end
if path(D377,2) == path(D377,4)
yHZC(path(D377,1),path(D377,2)) = false;
yHZC(path(D377,3),path(D377,4)) = false;
end
end
end
function B = uQX_(B,path,Zo_1)
B(path(1,1),path(1,2)) = Zo_1;
for D377 = 1:size(path,1);
B(path(D377,3),path(D377,4)) = Zo_1;
end
end
function path = j_NX(c23h,gsqJ,CEBs,qpOz)
path = zeros(qpOz,4);
A76U = mod(c23h,CEBs);
q4Tp = ceil(c23h/CEBs);
for UwSh = 1:qpOz
path(UwSh,1:2) = [A76U q4Tp];
c23h = gsqJ(c23h);
A76U = mod(c23h,CEBs);
q4Tp = ceil(c23h/CEBs);
path(UwSh,3:4) = [A76U q4Tp];
end
end
function path = N1W6(B,JEWF,J9Bk,Zo_1,eAB6,Z4wW)
[CEBs KEiM] = size(B);
gsqJ = zeros(CEBs,KEiM);
ICTe = -ones(CEBs,KEiM);
ICTe(JEWF(2),J9Bk(2)) = 0;
ICTe(JEWF(1),J9Bk(1)) = -2;
ICTe( B == Zo_1 ) = -2;
VY3j = zeros(CEBs*KEiM,1);
VY3j(1) = JEWF(2) + (J9Bk(2)-1)*CEBs;
count = 1;
Ksd_ = [-1 1 -CEBs CEBs];
JaSv = randperm(4);
for step = 0:min(eAB6,Z4wW)
if count < 1, break, end
IN5G = count;
c23h = VY3j;
count = 0;
for D377 = 1:IN5G
jyOR = c23h(D377);
for iRuy=1:4
Fc44 = jyOR + Ksd_(JaSv(iRuy));
eQBO = ICTe(Fc44);
if eQBO == -2
gsqJ(Fc44) = jyOR;
path = j_NX(Fc44,gsqJ,CEBs,step+1);
return
end
if eQBO == -1 && B(Fc44) == 0
ICTe(Fc44) = step+1;
gsqJ(Fc44) = jyOR;
count = count + 1;
VY3j(count) = Fc44;
end
end
end
end
path = [];
end
function path = oeeg(B,WMIG,yHZC,JEWF,J9Bk,Zo_1,jxFe,Cy3C,Z4wW)
[CEBs KEiM] = size(B);
McUf = false(CEBs,KEiM);
gsqJ = zeros(CEBs,KEiM);
ICTe = -ones(CEBs,KEiM);
ICTe(JEWF(1),J9Bk(1)) = -2;
ICTe( B == Zo_1 ) = -2;
maxstep = min((jxFe*27)+Cy3C,Z4wW+1);
Tf9F = zeros(maxstep+28,1);
Tf9F(1) = JEWF(2) + (J9Bk(2)-1)*CEBs;
Ksd_ = [-CEBs CEBs -1 1];
for step = 1:maxstep
while Tf9F(step)>0
jyOR = Tf9F(step);
Tf9F(step)=ICTe(jyOR);
for iRuy = 1:4
Fc44 = jyOR + Ksd_(iRuy);
eQBO = ICTe(Fc44);
if eQBO==-1
if B(Fc44) == 0
ICTe(Fc44) = Tf9F(step+1);
Tf9F(step+1) = Fc44;
gsqJ(Fc44) = jyOR;
elseif (WMIG(Fc44)&&(iRuy<3)) || (yHZC(Fc44)&&(iRuy>2))
ICTe(Fc44) = Tf9F(step+26);
Tf9F(step+26) = Fc44;
gsqJ(Fc44) = jyOR;
McUf(Fc44) = true;
end
end
if eQBO==-2
step=step+1;
gsqJ(Fc44) = jyOR;
A76U=mod(Fc44,CEBs);
q4Tp=ceil(Fc44/CEBs);
path = zeros(step,4);
UwSh = 0;
while A76U ~= JEWF(2) || q4Tp ~= J9Bk(2)
UwSh = UwSh + 1;
path(UwSh,1:2) = [A76U q4Tp];
Fc44 = A76U + (q4Tp-1)*CEBs;
sBq5 = gsqJ(Fc44);
tjqj=mod(sBq5,CEBs);
ZBD3=ceil(sBq5/CEBs);
path(UwSh,3:4) = [tjqj ZBD3];
A76U = tjqj;
q4Tp = ZBD3;
if McUf(A76U,q4Tp)
UwSh = UwSh + 1;
path(UwSh,:) = [A76U q4Tp A76U q4Tp];
end
end
path = path(1:UwSh,:);
return
end
end
end
end
path = [];
end
function W = Pgas(B)
[W,vxin] = U5Ec(B);
JTAf = 0;
fHdS = round(mod(B(:),2));
if vxin < 2100
return
end
[A18G,ZYTC] = size(B);
B = flipud(fliplr(B'));
[tGSh,TWkh] = U5Ec(B);
if vxin > TWkh
W = [A18G-tGSh(:,2)+1 ZYTC-tGSh(:,1)+1 A18G-tGSh(:,4)+1 ZYTC-tGSh(:,3)+1];
end
if fHdS~=JTAf; W = zeros(0,4); end
end
function [W,vxin] = U5Ec(B)
[Nzus,nPAo]=size(B);
wfzu=nan(Nzus+2,nPAo+2);
wfzu(2:end-1,2:end-1)=B;
WEJX = wfzu;
jxFe = 4;
if size(WEJX,2) > 20
QZM_ = 4;
ekGZ = 8;
eAB6 = 12;
else
QZM_ = 3;
ekGZ = 7;
eAB6 = 11;
end
vxin = inf;
U03d = [1 2;2 1];
eMdK = [1 3;3 1];
dwc0 = [3 2 1;1 2 3];
for U9Z0 = 1:2
if U9Z0 == 2
[spXL ZsNv] = ANny(WEJX,QZM_,U03d(U9Z0,:));
[UNEc u27U] = bnMs(ZsNv,spXL,ekGZ,eMdK(U9Z0,:));
[WSBI vsKK] = bnMs(u27U,UNEc,eAB6,eMdK(U9Z0,:));
else
[spXL ZsNv] = ANny(WEJX,4,U03d(U9Z0,:));
[WSBI vsKK] = bnMs(ZsNv,spXL,11,eMdK(U9Z0,:));
end
for xv05 = 1:2
if U9Z0 == 2 && xv05 == 2 && vxin > 2100, return, end
z5iI = VC1W(WEJX,vsKK,WSBI,jxFe,eAB6,dwc0(xv05,:))-1;
m2UI = wj9q(B,z5iI);
if m2UI <= vxin
vxin = m2UI;
W = z5iI;
jxFe = jxFe - 1;
end
end
end
if Nzus*nPAo > 290; return; end
vAwP = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if vAwP <= 4
NBU7 = MmmR(B);
XeUF = wj9q(B,NBU7);
if XeUF < vxin
W = NBU7;
vxin = XeUF;
end
end
end
function path = ZdKU(B,JEWF,J9Bk,Zo_1,eAB6,Z4wW)
function path = ZNGj(bwy7,tXHN,ZreI)
d84z(bwy7,tXHN) = xVJt(D377);
UA5H(bwy7,tXHN) = VNMm(D377);
path = zeros(ZreI,4);
for iFXd = 1:ZreI
path(iFXd,1:2) = [bwy7 tXHN];
RgcH = d84z(bwy7,tXHN);
SukJ = UA5H(bwy7,tXHN);
path(iFXd,3:4) = [RgcH SukJ];
bwy7 = RgcH;
tXHN = SukJ;
end
end
[CEBs KEiM] = size(B);
d84z = zeros(CEBs,KEiM);
UA5H = zeros(CEBs,KEiM);
ICTe = -ones(CEBs,KEiM);
ICTe(JEWF(2),J9Bk(2)) = 0;
ICTe(JEWF(1),J9Bk(1)) = -2;
ICTe( B == Zo_1 ) = -2;
oGKA = zeros(CEBs*KEiM,1);
WLNb = zeros(CEBs*KEiM,1);
count = 1;
oGKA(1) = JEWF(2);
WLNb(1) = J9Bk(2);
bRa1=[-1 1 0 0];
b8it=[0 0 -1 1];
for step = 0:min(eAB6,Z4wW)
if count < 1, break, end
IN5G = count;
xVJt = oGKA(1:IN5G);
VNMm = WLNb(1:IN5G);
count = 0;
for D377 = 1:IN5G
cLIn = VNMm(D377);
jyOR = xVJt(D377);
for iRuy=1:4
bwy7 = jyOR + bRa1(iRuy);
tXHN = cLIn + b8it(iRuy);
Fc44 = bwy7 + (tXHN-1)*CEBs;
eQBO = ICTe(Fc44);
if eQBO == -2
path = ZNGj(bwy7,tXHN,step+1);
return
elseif eQBO == -1 && B(Fc44) == 0
ICTe(Fc44) = step+1;
d84z(Fc44) = jyOR;
UA5H(Fc44) = cLIn;
count = count + 1; oGKA(count) = bwy7; WLNb(count) = tXHN;
end
end
end
end
path = [];
end
function SEtX = MmmR(Yjez)
P2WH = unique(Yjez);
P2WH(1) = [];
lX23 = zeros(size(P2WH));
for D377 = 1:length(lX23)
lX23(D377) = nnz(P2WH(D377) == Yjez(:));
end
for D377 = 1:length(lX23)
if lX23(D377) == 1
Yjez(P2WH(D377) == Yjez(:)) = -1;
end
end
UgzM = zeros(size(Yjez)+2);
kAlc = repmat(-1,size(UgzM));
kAlc(2:end-1,2:end-1) = Yjez;
SEtX = [];
[AlwS, IgT6] = find(kAlc>0);
oqkV = (size(kAlc,1)/2 - AlwS).^2 + (size(kAlc,2)/2 - IgT6).^2;
[oqkV, order] = sort(oqkV);
order = order';
for LeIV = 1:length(AlwS)-1
koRK = 0;
fXk9 = 32;
for D377 = order
if UgzM(AlwS(D377), IgT6(D377))
continue
end
[tJua, k65C, Qja6] = tUSe(kAlc, UgzM, AlwS(D377), IgT6(D377), fXk9);
if tJua > koRK
koRK = tJua;
SEoX = k65C;
fXk9 = Qja6;
if fXk9 == 1
break
end
end
end
if koRK == 0
SEtX = SEtX - 1;
return
end
UgzM = uQX_(UgzM, SEoX, kAlc(SEoX(1,1), SEoX(1,2)));
kAlc = uQX_(kAlc, SEoX, kAlc(SEoX(1,1), SEoX(1,2)));
SEtX = [SEtX; SEoX];
end
SEtX = SEtX - 1;
end
function [koRK, SEoX, fXk9] = tUSe(Yjez, UgzM, c23h, VNMm, JjA7)
koRK = 0;
SEoX = [];
iFXd = [1 -1 0 0];
LeIV = [0 0 1 -1];
if ~any(UgzM(:)==Yjez(c23h,VNMm))
UgzM = Yjez;
end
kAlc = Yjez;
kAlc(kAlc>0) = -1;
kAlc(c23h,VNMm) = 1;
fXk9 = Inf;
P2WH = Yjez(c23h,VNMm);
for D377 = 1:JjA7-2
[AlwS, IgT6] = find(kAlc==D377);
for lX23 = 1:length(AlwS)
for bBbJ = 1:4
yRS1 = AlwS(lX23) + iFXd(bBbJ);
VNuf = IgT6(lX23) + LeIV(bBbJ);
if UgzM(yRS1,VNuf) == P2WH && ~(yRS1 == c23h && VNuf == VNMm)
fXk9 = D377;
break
end
eKFC = kAlc(yRS1,VNuf);
if eKFC == 0
kAlc(yRS1,VNuf) = D377+1;
end
end
if fXk9 < Inf
break
end
end
if fXk9 < Inf
break
end
end
if fXk9 == Inf
return
end
koRK = Yjez(c23h,VNMm) - fXk9;
if fXk9 == 1
SEoX = [c23h, VNMm, yRS1, VNuf];
return
end
SEoX = zeros(fXk9,4);
for step = fXk9:-1:1
for bBbJ = 1:4
Kiqi = yRS1 + iFXd(bBbJ);
Df2A = VNuf + LeIV(bBbJ);
if kAlc(Kiqi, Df2A) == step
break
end
end
SEoX(step,:) = [Kiqi, Df2A, yRS1, VNuf];
yRS1 = Kiqi;
VNuf = Df2A;
end
end
function [W B] = ANny(B,eAB6,xly2)
W = [];
[PtlA LeIV] = vVCG(B,xly2);
if LeIV < 1
return
end
PtlA=sortrows(PtlA,-xly2);
for D377 = 1:LeIV
if PtlA(D377,2) >= 2
P2WH = PtlA(D377,1);
[JEWF J9Bk] = find(B == P2WH);
IN5G = size(JEWF,1);
btSU = IN5G*(IN5G-1)/2;
dist = zeros(btSU,3);
U9Z0 = 0;
for gs2H = 1:IN5G
for Yjez = (gs2H+1):IN5G
U9Z0 = U9Z0 + 1;
dist(U9Z0,1) = gs2H;
dist(U9Z0,2) = Yjez;
dist(U9Z0,3) = abs(JEWF(gs2H)-JEWF(Yjez)) + abs(J9Bk(gs2H)-J9Bk(Yjez));
end
end
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
lYaJ = reshape(dist(:,1:2)',[],1);
xEPJ = 0;
u2SZ = 1;
Sq4E = false(IN5G,1);
for D377=1:IN5G
pUid = find( ~Sq4E(lYaJ(u2SZ:end)) , 1 , 'first');
if isempty(pUid)
break
end
gs2H = lYaJ(pUid);
Distance = abs(JEWF([1:gs2H-1,gs2H+1:end]')-JEWF(gs2H)) + abs(J9Bk([1:gs2H-1,gs2H+1:end]')-J9Bk(gs2H));
if max(Distance)>eAB6-1
break
end
path = zU3I(B,JEWF(gs2H),J9Bk(gs2H),JEWF([1:gs2H-1,gs2H+1:end]'),J9Bk([1:gs2H-1,gs2H+1:end]'), -P2WH, eAB6, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
xEPJ = 2;
break
end
end
if xEPJ < 2
continue
end
for iFXd = 3:IN5G
[k16Y QwX_] = find(B == -P2WH);
[JEWF J9Bk] = find(B == P2WH);
[QIBJ,BuQb] = meshgrid(JEWF,k16Y);
[VB2s,VkT3] = meshgrid(JEWF,k16Y);
Distance = abs(QIBJ-BuQb) + abs(VB2s-VkT3);
if max(Distance(:))>eAB6-1
break
end
path = zU3I(B,k16Y,QwX_,JEWF,J9Bk, -P2WH, eAB6, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
QNCK = true;
else
break
end
end
end
end
end
function [W B] = bnMs(B,W,O2dX,xly2)
[PtlA LeIV] = vVCG(B,xly2);
if LeIV < 1, return, end
PtlA=sortrows(PtlA,-xly2);
for D377 = 1:LeIV
P2WH = PtlA(D377,1);
tnf7 = sum(B == -P2WH);
if tnf7 == 0
if PtlA(D377,2) >= 2
[JEWF J9Bk] = find(B == P2WH);
IN5G = size(JEWF,1);
btSU = IN5G*(IN5G-1)/2;
dist = zeros(btSU,3);
U9Z0 = 0;
for gs2H = 1:IN5G
for Yjez = (gs2H+1):IN5G
U9Z0 = U9Z0 + 1;
dist(U9Z0,1) = gs2H;
dist(U9Z0,2) = Yjez;
dist(U9Z0,3) = abs(JEWF(gs2H)-JEWF(Yjez)) + abs(J9Bk(gs2H)-J9Bk(Yjez));
end
end
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
maxstep = min(O2dX,2*P2WH+1);
QNCK = false;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > maxstep+1
break
end
gs2H = dist(U9Z0,1);
Yjez = dist(U9Z0,2);
path = ZdKU(B,[JEWF(gs2H); JEWF(Yjez)], [J9Bk(gs2H); J9Bk(Yjez)], -P2WH, O2dX, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
QNCK = true;
break
end
end
if ~QNCK
continue
end
end
end
[JEWF J9Bk] = find(B == P2WH);
Fosq = size(JEWF,1);
maxstep = min(O2dX,P2WH+1);
for iFXd = 1:Fosq
[k16Y QwX_] = find(B == -P2WH);
[JEWF J9Bk] = find(B == P2WH);
QNCK = false;
path = zU3I(B,k16Y,QwX_,JEWF,J9Bk, -P2WH, O2dX, P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
QNCK = true;
end
if ~QNCK
break
end
end
end
end
function [W B] = VC1W(wfzu,B,W,jxFe,O2dX,xly2)
function BoAI()
for SEtX = 1:size(path,1);
if path(SEtX,1) == path(SEtX,3)
Q7P5(path(SEtX,1),path(SEtX,2)) = false;
Q7P5(path(SEtX,3),path(SEtX,4)) = false;
if path(SEtX,2) == path(SEtX,4)
B(path(SEtX,1),path(SEtX,2)) = -9999;
end
end
if path(SEtX,2) == path(SEtX,4)
gPSm(path(SEtX,1),path(SEtX,2)) = false;
gPSm(path(SEtX,3),path(SEtX,4)) = false;
end
end
end
[Q7P5 gPSm] = NdZo(wfzu,B,W);
[PtlA LeIV] = vVCG(B,xly2);
if LeIV < 1, return, end
PtlA=sortrows(PtlA,-xly2);
for D377 = 1:LeIV
P2WH = PtlA(D377,1);
tnf7 = sum(B == -P2WH);
if tnf7 == 0
if PtlA(D377,2) >= 2
[JEWF J9Bk] = find(B == P2WH);
IN5G = size(JEWF,1);
btSU = IN5G*(IN5G-1)/2;
dist = zeros(btSU,3);
U9Z0 = 0;
for gs2H = 1:IN5G
for Yjez = (gs2H+1):IN5G
U9Z0 = U9Z0 + 1;
dist(U9Z0,1) = gs2H;
dist(U9Z0,2) = Yjez;
dist(U9Z0,3) = abs(JEWF(gs2H)-JEWF(Yjez)) + abs(J9Bk(gs2H)-J9Bk(Yjez));
end
end
[oqkV eci_] = sort(dist(:,3));
dist = dist(eci_,:);
maxstep = min((jxFe*25)+O2dX,2*P2WH+1);
QNCK = false;
for U9Z0 = 1:btSU
if dist(U9Z0,3) > maxstep+1
break
end
gs2H = dist(U9Z0,1);
Yjez = dist(U9Z0,2);
path = oeeg(B,Q7P5,gPSm,[JEWF(gs2H); JEWF(Yjez)], [J9Bk(gs2H); J9Bk(Yjez)], -P2WH, jxFe, O2dX, 2*P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
BoAI();
QNCK = true;
break
end
end
if ~QNCK
continue
end
end
end
[JEWF J9Bk] = find(B == P2WH);
Fosq = size(JEWF,1);
maxstep = min((jxFe*25)+O2dX,P2WH+1);
for iFXd = 1:Fosq
[k16Y QwX_] = find(B == -P2WH);
[JEWF J9Bk] = find(B == P2WH);
QNCK = false;
path = I2we(B,Q7P5,gPSm,k16Y,QwX_,JEWF,J9Bk, -P2WH, jxFe, O2dX, P2WH);
if size(path,1) > 0
W = [W; path];
B = uQX_(B,path,-P2WH);
BoAI();
QNCK = true;
end
if ~QNCK
break
end
end
end
end
function path = I2we(B,WMIG,yHZC,rowS,colS,wVHw,wRj7,Zo_1,jxFe,Cy3C,Z4wW)
function path = j_NX(Fc44,step)
gsqJ(Fc44) = jyOR;
path = zeros(step,4);
UwSh = 0;
a2ZQ = 0;
d81o = zeros(step,1);
B3xt = zeros(step,1);
Is75 = zeros(step,1);
while isempty(find(LZVY==Fc44,1))
UwSh = UwSh + 1;
d81o(UwSh,1) = Fc44;
sBq5 = gsqJ(Fc44);
B3xt(UwSh,1) = sBq5;
Fc44 = sBq5;
if McUf(Fc44)
a2ZQ = a2ZQ + 1;
Is75(a2ZQ,1) = Fc44;
end
end
d81o = [ d81o(1:UwSh,:) ; Is75(1:a2ZQ,1) ];
B3xt = [ B3xt(1:UwSh,:) ; Is75(1:a2ZQ,1) ];
path = [ mod(d81o,CEBs) , ceil(d81o/CEBs) , mod(B3xt,CEBs) , ceil(B3xt/CEBs) ];
end
[CEBs KEiM] = size(B);
McUf = false(CEBs,KEiM);
gsqJ = zeros(CEBs,KEiM);
ICTe = -ones(CEBs,KEiM);
LZVY = rowS + (colS-1)*CEBs;
ICTe(LZVY) = 0;
ICTe(wVHw + (wRj7-1)*CEBs) = -2;
maxstep = min((jxFe*25)+Cy3C,Z4wW+1);
QK7Z = zeros(maxstep+26,1);
ixCB = [-1 1];
for step = 0:maxstep
if step == 0
c23h = LZVY;
elseif QK7Z(step) == 0
continue
else
c23h = find(ICTe == step);
end
IN5G = numel(c23h);
for D377 = 1:IN5G
jyOR = c23h(D377);
for ifHp = 1:2
Fc44 = jyOR + ixCB(ifHp) * CEBs;
eQBO = ICTe(Fc44);
if eQBO == -2
path = j_NX(Fc44,step+1);
return
elseif eQBO == -1
if B(Fc44) == 0
ICTe(Fc44) = step+1; QK7Z(step+1) = 1;
gsqJ(Fc44) = jyOR;
elseif WMIG(Fc44)
ICTe(Fc44) = step+26; QK7Z(step+26) = 1;
gsqJ(Fc44) = jyOR;
McUf(Fc44) = true;
end
end
end
for ifHp = 1:2
Fc44 = jyOR + ixCB(ifHp);
eQBO = ICTe(Fc44);
if eQBO == -2
path = j_NX(Fc44,step+1);
return
elseif eQBO == -1
if B(Fc44) == 0
ICTe(Fc44) = step+1; QK7Z(step+1) = 1;
gsqJ(Fc44) = jyOR;
elseif yHZC(Fc44)
ICTe(Fc44) = step+26; QK7Z(step+26) = 1;
gsqJ(Fc44) = jyOR;
McUf(Fc44) = true;
end
end
end
end
end
path = zeros(0,4);
end
function path = zU3I(B,rowS,colS,D6b9,t6BM,Zo_1,eAB6,Z4wW)
[CEBs KEiM] = size(B);
d84z = zeros(CEBs,KEiM);
UA5H = zeros(CEBs,KEiM);
ICTe = -ones(CEBs,KEiM);
ICTe(rowS+(colS-1)*CEBs) = 0;
ICTe(D6b9+(t6BM-1)*CEBs) = -2;
VY3j = zeros(CEBs*KEiM,1);
WLNb = zeros(CEBs*KEiM,1);
count = numel(rowS);
VY3j(1:count) = rowS;
WLNb(1:count) = colS;
bRa1=[-1 1 0 0];
b8it=[0 0 -1 1];
for step = 0:min(eAB6,Z4wW)
if count < 1, break, end
IN5G = count;
xVJt = VY3j(1:IN5G);
VNMm = WLNb(1:IN5G);
count = 0;
for D377 = 1:IN5G
cLIn = VNMm(D377);
jyOR = xVJt(D377);
for iRuy=1:4
bwy7 = jyOR + bRa1(iRuy);
tXHN = cLIn + b8it(iRuy);
Fc44 = bwy7 + (tXHN-1)*CEBs;
eQBO = ICTe(Fc44);
if eQBO == -2
ZreI=step+1;
d84z(bwy7,tXHN) = xVJt(D377);
UA5H(bwy7,tXHN) = VNMm(D377);
path = zeros(ZreI,4);
for iFXd = 1:ZreI
path(iFXd,1:2) = [bwy7 tXHN];
RgcH = d84z(bwy7,tXHN);
SukJ = UA5H(bwy7,tXHN);
path(iFXd,3:4) = [RgcH SukJ];
bwy7 = RgcH;
tXHN = SukJ;
end
return
end
if eQBO == -1 && B(Fc44) == 0
ICTe(Fc44) = step+1;
d84z(Fc44) = jyOR;
UA5H(Fc44) = cLIn;
count = count + 1; VY3j(count) = bwy7; WLNb(count) = tXHN;
end
end
end
end
path = [];
end
|