in problema insule ( trebuie sa unesc 2 insule (una de elem 1 cu alta de elem 2) printr-un pod de lungime minima)
incerc sa scriu lee-ul clasic pt toate elementele 1 iar apoi un lee pt toate elementele 2 (pasii doar pe "0"-apa)
problema e, ca pt elementele 1 nu imi functioneaza lee-ul decat pentru prima margine pe care o gaseste?
aici e codul
pls help, ma chinui de 4 ore
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
o[i][j]=n*n*n*n*n;
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
if(a[i][j] == 1)
{
first=0;
last=0;
o[i][j]=1;
qi1[last]=i;
qj1[last]=j;
last++;
while (!isempty()){
i=qi1[first];
j=qj1[first];
first++;
inou = i+1;
jnou = j;
if (a[inou][jnou] == 0)
if (o[inou][jnou] > 1+ o[i][j])
{
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
}
inou = i-1;
jnou = j;
if (a[inou][jnou] == 0)
if (o[inou][jnou] > 1+ o[i][j])
{
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
}
inou = i;
jnou = j+1;
if (a[inou][jnou] == 0)
if (o[inou][jnou] > 1+ o[i][j])
{
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
}
inou = i;
jnou = j-1;
if (a[inou][jnou] == 0)
if (o[inou][jnou] > 1+ o[i][j])
{
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
}
}
}
}