Pagini recente » Cod sursa (job #1800828) | Cod sursa (job #2279513) | Cod sursa (job #1640588) | Cod sursa (job #1271384) | Cod sursa (job #175145)
Cod sursa(job #175145)
#include<fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int b[151][151],xnou,ynou,nm,x0,y0,a[151][151],dx[]={-1,1,0,0},dy[]={0,0,-1,1},n,m,i,j,ok,contor,cont[151][151],nm1;
char cheie[70000];
char vec[151][151];
int start=1;
struct punct
{ int x,y;
};
punct c[70000];
int main()
{
f>>n;
f>>m;
f>>ok;
contor=1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>a[i][j];
cont[i][j]=contor;
contor++;
if(cont[i][j]==ok)
{
x0=i;
y0=j;
}
}
for(i=1;i<=n;i++)
vec[i][1]++,vec[i][m]++;
for(j=1;j<=m;j++)
vec[1][j]++,vec[n][j]++;
vec[1][1]++,vec[1][m]++,vec[n][1]++,vec[n][m]++;
contor=1;
i=1;
nm=1;
c[1].x=x0;
c[1].y=y0;
cheie[cont[x0][y0]]=1;
while(i<=nm)
{ nm1=nm;
for(i=start;i<=nm1;i++)
{
for(j=0;j<=3;j++)
{
xnou=c[i].x+dx[j];
ynou=c[i].y+dy[j];
if(b[xnou][ynou]==0 && cheie[a[xnou][ynou]]==1)
{
b[xnou][ynou]=1;
contor++;
nm++;vec[c[i].x][c[i].y]++;
if(vec[c[i].x][c[i].y]==4)
{
c[i]=c[start];
start++;
}
c[nm].x=xnou;
c[nm].y=ynou;
cheie[cont[xnou][ynou]]=1;
}
} }
}
g<<(contor-1);
f.close();
g.close();
return 0;
}