Pagini recente » Cod sursa (job #1944842) | Cod sursa (job #1190951) | Cod sursa (job #2625448) | Cod sursa (job #1392724) | Cod sursa (job #414614)
Cod sursa(job #414614)
#include<cstdio>
int m,n,p[1002][1002],dl[1002],dc[1002];
char a[1002][1002];
struct point
{
int lz,cz;
};
point cc[1<<20];
int max(int x,int y)
{
if(x>y)
return x;
return y;
}
int l1()
{
int i,j,nr=0;
point x,y;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i][j]=='D')
{
cc[nr].lz=i;
cc[nr].cz=j;
nr++;
}
for(i=0;i<nr;i++)
{
x.lz=cc[i].lz;
x.cz=cc[i].cz;
dl[0]=1;
dl[1]=0;
dl[2]=-1;
dl[3]=0;
dc[0]=0;
dc[1]=1;
dc[2]=0;
dc[3]=-1;
for(j=0;j<4;j++)
if(p[x.lz+dl[j]][x.cz+dc[j]]==0 && a[x.lz+dl[j]][x.cz+dc[j]]!='*' && a[x.lz+dl[j]][x.cz+dc[j]]!='D')
{
y.lz=x.lz+dl[j];
y.cz=x.cz+dc[j];
p[y.lz][y.cz]=p[x.lz][x.cz]+1;
cc[nr]=y;
nr++;
}
}
return 0;
}
int l2(int nub)
{
}
int cb()
{
int i=0,pas=1<<11;
int cheap=max(m,n);
for(i=0;pas;pas>>=1)
if(l2(i+pas))
i+=pas;
return i;
}
int main()
{
int i,j;
freopen("barbar.in","r",stdin);
freopen("barbar.out","w",stdout);
scanf("%d%d\n",&m,&n);
for(i=1;i<=m;i++)
gets(a[i]+1);
for(i=0;i<=m+1;i++)
{
a[i][0]='*';
a[i][n+1]='*';
}
for(j=0;j<=n+1;j++)
{
a[0][j]='*';
a[m+1][j]='*';
}
l1();
//meanwhile, sa verific care teste sunt cu -1
printf("-1\n");
return 0;
}